MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)
生活随笔
收集整理的這篇文章主要介紹了
MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
網(wǎng)上有種說(shuō)法是:由于一般是采用小表join大表的方式(可以提高效率),所以有人說(shuō)將小表放在左邊,讓它先執(zhí)行,記住,這種說(shuō)法是錯(cuò)誤的!!!有例為證:
我們看上例:
film inner join film_actor using(film_id) inner join actor using(actor_id)
的執(zhí)行順序是——
actor>>film_actor>>film?
如下圖:
使用 straight_join?關(guān)鍵字可以保證嚴(yán)格按照書(shū)寫(xiě)順序來(lái)作為表的執(zhí)行順序,但是卻犧牲了性能。
上圖中沒(méi)有使用該關(guān)鍵字,要掃描的行數(shù)比使用了?straight_join?關(guān)鍵字的行數(shù)要少很多,也就是MySQL自動(dòng)進(jìn)行了優(yōu)化
我們可以使用
show status like 'last_query_cost'來(lái)查詢(xún)上一條sql需要查詢(xún)的數(shù)據(jù)頁(yè)數(shù)量
7892 VS 8885
總結(jié)
以上是生活随笔為你收集整理的MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySQL Join Buffer参数查
- 下一篇: MySQL排序优化(两次排序和单次排序)