`

MySQL STRAIGHT_JOIN 与 NATURAL JOIN

 
阅读更多

MySQL STRAIGHT_JOIN

STRAIGHT_JOIN 是 MySQL 对标准 SQL 的扩展,用于在多表查询时指定表载入的顺序。在 JOIN 表连接中,同样可以指定表载入的顺序,本文只讲述 STRAIGHT_JOIN 在表连接 JOIN 中的应用。

MySQL STRAIGHT_JOIN 语法如下:

1 ... FROM table1 STRAIGHT_JOIN table2 ON condition ...

STRAIGHT_JOIN 实际上与内连接 INNER JOIN 表现完全一致,不同的是使用了 STRAIGHT_JOIN 后,table1 会先于 table2 载入。

提示

MySQL 在执行 INNER JOIN 的时候,会根据自己内部的优化规则来决定先载入 table1 还是 table2,如果您确认 MySQL 载入表的顺序并不是最优化的时候,就可以使用 STRAIGHT_JOIN 以替代 INNER JOIN。

MySQL STRAIGHT_JOIN 例子

1 SELECT article.aid,article.title,user.username FROM article STRAIGHT_JOINuser ON article.uid=user.uid

注意:该 SQL 仅仅是 STRAIGHT_JOIN 使用示例,并不表示其合理性。

如果有更多表进行连接,那么使用 STRAIGHT_JOIN 后,其载入顺序就遵循从左往右的规则。最后,STRAIGHT_JOIN 无法应用于 LEFT JOIN 或 RIGHT JOIN。

MySQL NATURAL JOIN

NATURAL JOIN 也叫自然连接,实际是属于 JOIN 的一种。

MySQL NATURAL JOIN 语法如下:

1 ... FROM table1 NATURAL  JOIN table2 ...

使用 NATURAL JOIN 时,MySQL 将表中具有相同名称的字段自动进行记录匹配,而这些同名字段类型可以不同。因此,NATURAL JOIN 不用指定匹配条件。

NATURAL JOIN 默认是同名字段完全匹配的 INNER JOIN,也可以使用 LEFT JOIN 或 RIGHT JOIN。一些例子如下:

1 SELECT article.aid,article.title,user.username FROM article NATURAL JOINuser
2 // LEFT
3 SELECT article.aid,article.title,user.username FROM article NATURAL LEFTJOIN user
4 // RIGHT
5 SELECT article.aid,article.title,user.username FROM article NATURAL RIGHTJOIN user
分享到:
评论

相关推荐

    在MySQL中使用STRAIGHT_JOIN的教程

    在MySQL数据库中,`STRAIGHT_JOIN` 是一种特殊的连接类型,用于在执行多表联接查询时指定表的连接顺序。这个关键字主要用在优化查询性能上,尤其是在处理大表联接或者需要避免不理想的连接顺序时。本文将深入探讨`...

    MySQL中一些优化straight_join技巧

    Straight_join是一种在MySQL中用于优化查询的策略,它强制数据库按照指定的表顺序进行连接,从而可以改善查询性能。 在其他数据库系统中,例如Oracle,有多种连接提示(hint),允许数据库管理员(DBA)通过在SQL...

    MYSQL.rar_MYSQL_mysql 优化_mysql优化_mysql备份_sql优化

    使用JOIN时,确保有足够的索引支持;利用EXPLAIN分析查询计划,理解执行过程;避免在WHERE子句中使用复杂的表达式或函数,这可能导致无法使用索引。 3. 配置优化:调整MySQL服务器的配置参数,如innodb_buffer_pool...

    银河麒麟_飞腾_MYSQL 离线安装包 mysql5.7_kylin_arm64.zip

    而飞腾处理器作为国产CPU的代表之一,与银河麒麟操作系统相结合,为用户提供了一套完整的自主可控计算环境。在这个背景下,MySQL数据库系统对于这些硬件平台的离线安装就显得尤为重要,特别是在网络环境不稳定或者对...

    MySQL_teach_cn.rar_MYSQL_PHP 教程_TEACH_mysql 教程_mysql教程

    本教程“MYSQL_PHP 教程_TEACH_mysql 教程_mysql教程”旨在帮助初学者和有一定基础的开发者深入理解MySQL,并掌握与PHP的交互技巧。 一、MySQL基础知识 MySQL是一个开源、免费的数据库系统,它使用SQL(结构化查询...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_索引结构与检索原理 · 18.尚硅谷_MySQL高级_哪些情况适合建索引 · 19.尚硅谷_MySQL高级_哪些情况不适合建索引 · 20.尚硅谷_MySQL高级_性能分析前提知识 · 21.尚硅谷_MySQL高级_explain使用...

    mysql高级视频教程百度云(2019).txt

    17.MySQL高级_索引结构与检索原理.avi 16.MySQL高级_索引分类和建索引命令语句.avi 15.MySQL高级_索引优势劣势.avi 14.MySQL高级_索引是什么.avi 13.MySQL高级_七种JOIN的SQL编写.avi 12.MySQL高级_七种...

    mysql_cn_sc.rar_mysql 中文_mysql手册_sql mysql

    这份“mysql_cn_sc.rar”压缩包包含了MySQL的中文手册,是学习和查阅MySQL相关知识的重要资源。 `mysql_cn_sc.chm`文件很可能是MySQL中文版的手册,CHM(Compiled HTML Help)是微软的一种帮助文件格式,将HTML文档...

    MySQL高级_思维导图

    MySQL通常采用客户端/服务器架构,由前端的客户端应用程序与后端的数据库服务器通信。服务器组件处理数据存储和检索,而客户端负责交互和查询提交。MySQL还支持分布式架构,如主从复制,以实现数据冗余和负载均衡。...

    mysql manual.rar_Alpha_MySQL Manu_mysql 3 chm_mysql 3.23 c_mysql

    学习MySQL 3.23.7-alpha的中文参考手册可以帮助你理解数据库管理系统的基础,如数据类型、表的创建与修改、索引的使用、JOIN操作以及备份和恢复策略。此外,它还涵盖了安全性设置,包括用户权限管理和访问控制,这...

    mySQL.zip_MYSQL_mysql 课件_学习笔记_笔记_资料

    这份"mySQL.zip_MYSQL_mysql 课件_学习笔记_笔记_资料"的压缩包内容包括了MySQL的培训课件和学习笔记,非常适合初学者进行数据库知识的入门学习。 51CTO下载-Mysql培训课件.pdf可能涵盖了以下MySQL的核心知识点: ...

    MySQL中Nested-Loop Join算法小结

    通过调整JOIN顺序,或者使用`STRAIGHT_JOIN`语法指定JOIN顺序,可以强制优化器使用特定的驱动表。 Block Nested-Loop Join的效率提升在于使用join buffer来存储外部表的行。这样,内部表只需与buffer中的行组合进行...

    MYSQLS_fortjoq_MYSQL_

    在"MYSQLS_fortjoq_MYSQL_"这个主题中,我们可以深入探讨MySQL的基础知识,包括SQL语句的使用,以及可能涉及到的数据库设计和管理。 SQL(结构化查询语言)是用于管理和操作数据库的标准语言,它允许我们执行各种...

    sql.rar_MYSQL_MYSQL ppt_sql 练习

    这个"sql.rar_MYSQL_MYSQL ppt_sql 练习"压缩包显然包含了关于MySQL的详细教程和练习材料,旨在帮助用户深入理解和熟练掌握MySQL的相关技能。 首先,"MYSQL数据库的介绍"部分可能涵盖MySQL的基本概念,比如什么是...

    mysql.rar_MYSQL_MySQL documents_mysql docume

    1. **安装与配置**:介绍如何在不同的操作系统上安装MySQL服务器,配置数据库参数,以及启动和停止服务。 2. **SQL语法**:涵盖SELECT、INSERT、UPDATE、DELETE等基本操作,以及更复杂的JOIN、子查询、视图和存储...

    MySQL数据库高效使用规范.docx.zip_MYSQL_mysql 优化_mysql优化

    - **减少JOIN操作**:尽量保持查询简单,避免过多的JOIN操作,尤其是多表JOIN,可以考虑数据模型的调整或增加中间表来优化。 - **使用EXPLAIN分析查询**:利用EXPLAIN查看查询执行计划,了解MySQL如何处理SQL语句...

    mysql数据库_MYSQL_

    连接查询用于合并来自多个表的数据,主要有内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。通过连接查询,可以实现更复杂的查询逻辑,例如根据条件从多个表中获取数据。 ...

Global site tag (gtag.js) - Google Analytics