`

[转]MySql 中多个left join 之间的顺序问题

阅读更多

 

MySql 中多个left join 之间的顺序问题

三个表 板块表(block)、帖子表(post)、会员表(user)
如果查询 帖子列表中 帖子 是属于哪个板块和添加帖子的会员信息,sql语句如下:

 

效率高写法:

1.  SELECT * FROM post LEFT JOIN block ON....LEFT JOIN user ON....WHERE ...ORDER BY ....LIMIT

 效率稍低:

2.   SELECT * FROM post LEFT JOIN user ON....LEFT JOIN block ON....WHERE ...ORDER BY ....LIMIT ....

 关于连接条件的优化在顺序上有个原则:数剧量少的条件尽量写在前面。

一个论坛当中板块的数量要比用户的数量小的多了。

分享到:
评论

相关推荐

    MySQL left join操作中on和where放置条件的区别介绍

    在SQL查询中,`LEFT JOIN` 是一种连接两个或多个表的方法,以便从左表(通常是主表)中返回所有行,即使在右表中没有匹配的行。在这个过程中,`ON` 和 `WHERE` 子句都是用来指定条件的,但它们在查询逻辑中的作用...

    SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化

    JOIN操作实际上是基于两个或更多表之间的关联条件,通过逐行扫描并匹配条件来合并数据。错误的理解是认为JOIN先创建两个表的笛卡尔积,然后通过WHERE和HAVING子句过滤结果,这种做法不仅占用大量内存,而且效率低下...

    Mysql中的join操作

    例如,对于Java和MySQL表,LEFT JOIN会显示所有Java记录,即使MySQL中没有匹配项,MySQL列也会显示NULL。 ```sql SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name; ``` - **外右联结(RIGHT JOIN...

    Mysql 关键字执行顺序

    2. **JOIN类型选择**:根据需求选择合适的JOIN类型,INNER JOIN是最高效的,LEFT JOIN和RIGHT JOIN用于保持数据完整性,而CROSS JOIN用于生成笛卡尔积(现在MySQL5.5以后默认避免全表笛卡尔积)。 3. **笛卡尔积**:...

    MySQL中文参考手册.chm

    8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql 8.7 从"双胞项目"中查询 8.7.1 找出...

    MYSQL

    8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql 8.7 从"双胞项目"中查询 ...

    MySQL中文参考手册

    + 3.4.4 运营一个使用MySQL的Web服务器 o 3.5 MySQL的许可证和技术支持费用 + 3.5.1 付款信息 + 3.5.2 联系信息 o 3.6 商业性支持的类型 + 3.6.1 基本的电子邮件支持 + 3.6.2 扩展的电子邮件支持 + 3.6.3 ...

    探究MySQL优化器对索引和JOIN顺序的选择

    MySQL优化器的工作流程包括多个阶段: 1. Query Rewrite:优化器可能会重写查询,比如将外连接转换为内连接。 2. const table detection:识别常量表,这些表只返回一行数据,可以提前计算。 3. Range analysis:...

    MySQL 5.1官方简体中文参考手册

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. ...

    浅析Mysql Join语法以及性能优化

    MySQL中的JOIN操作是数据库查询中不可或缺的部分,它用于在多个表之间建立关联,获取符合特定条件的数据。在本文中,我们将深入理解JOIN语法,并探讨如何进行性能优化。 首先,JOIN的基本语法涉及FROM子句后的两个...

    MYSQL中文手册

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT ...

    Mysql数据库第三章高级查询上机练习.zip

    2. **联接(JOIN)**:JOIN操作用于将多个表中的相关数据组合在一起。有多种类型的JOIN,包括INNER JOIN(只返回两个表中匹配的行),LEFT JOIN(返回左表的所有行及右表匹配的行),RIGHT JOIN(返回右表的所有行及...

    MySQL 5.1参考手册中文版

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT ...

    Mysql join联表及id自增实例解析

    MySQL中的JOIN操作是数据库查询中连接两个或更多表的关键技术,用于从多个表中提取相关数据。LEFT JOIN尤其重要,因为它返回左表的所有记录,即使在右表中没有匹配的记录,也会用NULL填充右表的字段。在LEFT JOIN中...

    万里长城第一步-先来学好数据库之MySQL上.docx

    它可以将多个表连接起来,以便进行数据的查询和分析。在这个学习资源中,我们将学习七种基本的Join查询类型:inner join、left join、right join、full join、left outer join、right outer join和cross join。 3. ...

    MySQL 5.1参考手册

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. ...

    mysql官方中文参考手册

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. ...

    MySQL5.1参考手册官方简体中文版

    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. ...

    mysql5.1中文手册

    MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT...

Global site tag (gtag.js) - Google Analytics