比较下面两个SQL语句:
select *from erp_purchase A join erp_purchasedetails B on A.id=B.id;
( 77,335 总计, 查询花费 0.0013 秒)
select *from erp_purchase A join (select *from erp_purchasedetails) as B on A.id=B.id;
( 82,438 总计, 查询花费 2.5800 秒)
语句的作用都是相同的,第二条查询时间要久得多。
也许有人会问,别蠢,第二条这么写干吊。
换一个例子:
SELECT * FROM erp_purchase A JOIN ( SELECT C.id AS id, C.price, D.payerFROM erp_purchasedetails C JOIN erp_purchasepay D ON C.ipurchaseID = D.ipurchaseID ) AS B ON A.id = B.id order by A.id LIMIT 0 , 30
( 30 总计, 查询花费 6.1111 秒) [id: 175 - 211]
或
SELECT * FROM erp_purchase A JOIN erp_purchasedetails C ON A.id = C.id JOIN erp_purchasepay D ON C.ipurchaseID = D.ipurchaseID LIMIT 0 , 30
( 149,273 总计, 查询花费 0.0017 秒)
好吧,本来是要说临时表的好处的,刚发现貌似用不到啊。我日。
本文通过对比两种不同的SQL查询方式,展示了如何通过优化SQL语句来提高查询效率。一种方法使用了子查询,而另一种则直接进行了表连接。
2430

被折叠的 条评论
为什么被折叠?



