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_JOIN user 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 JOIN user
|
2 |
// LEFT
|
3 |
SELECT article.aid,article.title, user .username FROM article NATURAL LEFT JOIN user
|
4 |
// RIGHT
|
5 |
SELECT article.aid,article.title, user .username FROM article NATURAL RIGHT JOIN user
|
相关推荐
在MySQL数据库中,`STRAIGHT_JOIN` 是一种特殊的连接类型,用于在执行多表联接查询时指定表的连接顺序。这个关键字主要用在优化查询性能上,尤其是在处理大表联接或者需要避免不理想的连接顺序时。本文将深入探讨`...
在mysql中就有之对应的straight_join,由于mysql只支持nested loops的连接方式,所以这里的straight_join类似oracle中的use_nl hint。mysql优化器在处理多表的关联的时候,很有可能会选择错误的驱动表进行关联
此外,使用straight_join代替普通的JOIN语句可以强制MySQL使用指定的表作为驱动表进行查询,这样可以更明确地控制查询计划,有助于分析和优化Join操作。这种控制有时候能够帮助DBA找到更高效的查询路径。 在实际...
使用JOIN时,确保有足够的索引支持;利用EXPLAIN分析查询计划,理解执行过程;避免在WHERE子句中使用复杂的表达式或函数,这可能导致无法使用索引。 3. 配置优化:调整MySQL服务器的配置参数,如innodb_buffer_pool...
本教程“MYSQL_PHP 教程_TEACH_mysql 教程_mysql教程”旨在帮助初学者和有一定基础的开发者深入理解MySQL,并掌握与PHP的交互技巧。 一、MySQL基础知识 MySQL是一个开源、免费的数据库系统,它使用SQL(结构化查询...
尚硅谷_MySQL高级_索引结构与检索原理 · 18.尚硅谷_MySQL高级_哪些情况适合建索引 · 19.尚硅谷_MySQL高级_哪些情况不适合建索引 · 20.尚硅谷_MySQL高级_性能分析前提知识 · 21.尚硅谷_MySQL高级_explain使用...
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相关知识的重要资源。 `mysql_cn_sc.chm`文件很可能是MySQL中文版的手册,CHM(Compiled HTML Help)是微软的一种帮助文件格式,将HTML文档...
《Navicat for MySQL 10.0.11在Linux环境下的安装与使用详解》 Navicat是一款强大的数据库管理工具,专为MySQL数据库设计,提供了多种平台的支持,包括Windows、Mac OS以及Linux等。在Linux环境中,我们通常会通过...
MySQL通常采用客户端/服务器架构,由前端的客户端应用程序与后端的数据库服务器通信。服务器组件处理数据存储和检索,而客户端负责交互和查询提交。MySQL还支持分布式架构,如主从复制,以实现数据冗余和负载均衡。...
学习MySQL 3.23.7-alpha的中文参考手册可以帮助你理解数据库管理系统的基础,如数据类型、表的创建与修改、索引的使用、JOIN操作以及备份和恢复策略。此外,它还涵盖了安全性设置,包括用户权限管理和访问控制,这...
这份"mySQL.zip_MYSQL_mysql 课件_学习笔记_笔记_资料"的压缩包内容包括了MySQL的培训课件和学习笔记,非常适合初学者进行数据库知识的入门学习。 51CTO下载-Mysql培训课件.pdf可能涵盖了以下MySQL的核心知识点: ...
通过调整JOIN顺序,或者使用`STRAIGHT_JOIN`语法指定JOIN顺序,可以强制优化器使用特定的驱动表。 Block Nested-Loop Join的效率提升在于使用join buffer来存储外部表的行。这样,内部表只需与buffer中的行组合进行...
在"MYSQLS_fortjoq_MYSQL_"这个主题中,我们可以深入探讨MySQL的基础知识,包括SQL语句的使用,以及可能涉及到的数据库设计和管理。 SQL(结构化查询语言)是用于管理和操作数据库的标准语言,它允许我们执行各种...
1. **安装与配置**:介绍如何在不同的操作系统上安装MySQL服务器,配置数据库参数,以及启动和停止服务。 2. **SQL语法**:涵盖SELECT、INSERT、UPDATE、DELETE等基本操作,以及更复杂的JOIN、子查询、视图和存储...
- **减少JOIN操作**:尽量保持查询简单,避免过多的JOIN操作,尤其是多表JOIN,可以考虑数据模型的调整或增加中间表来优化。 - **使用EXPLAIN分析查询**:利用EXPLAIN查看查询执行计划,了解MySQL如何处理SQL语句...
在MySQL数据库操作中,高效的多表联查是提高数据处理效率的关键。本示例主要探讨了如何使用`UNION ALL`和`LEFT JOIN`来实现这一目标,特别适合PHP开发者在构建内容管理系统(CMS)模板时自定义数据库数据的调用。...