sql – 当使用LEFT(外部)连接时,连接中表的顺序是否重要?
发布时间:2020-12-12 06:49:23 所属栏目:MsSql教程 来源:网络整理
导读:我想确认一下SQL查询 SELECT .... FROM apples,oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,bananas WHERE .... 完全等同于FROM子句中的其他排列,例如 SELECT .... FROM oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,bananas,appl
我想确认一下SQL查询
SELECT .... FROM apples,oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,bananas WHERE .... 完全等同于FROM子句中的其他排列,例如 SELECT .... FROM oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id,bananas,apples WHERE .... 要么 SELECT .... FROM bananas,apples,oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id WHERE .... 只要桔子和猕猴桃之间明确的LEFT JOIN保持不变.从我在各种文档中看到的内容来看,返回的集应该完全相同. 我真的只关心查询的结果,而不是它在实际数据库中的性能. (我正在使用PostgreSQL 8.3,其中AFAIK不支持关于连接顺序的优化器提示,并将尝试自动创建最佳查询计划). 解决方法它是一样的,但它与隐含的CROSS JOIN一样模棱两可.使用显式JOINS.如果要加入WHERE子句,则结果可能会有所不同,因为连接和过滤器混合在一起. SELECT .... FROM apples a JOIN bananas b ON ... JOIN oranges o ON ... LEFT JOIN kiwis k ON k.orange_id = o.id WHERE (filters only) 笔记: > INNER JOINS和CROSS JOINS是可交换和关联的:顺序通常无关紧要.>外部联接不是,您确定了> SQL是声明性的:您告诉优化器您想要什么,而不是如何操作.这将删除JOIN订单注意事项(取决于前两个项目) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读