假如存在以下形式的SQL:
select A.*,B.amount
from A left join (
select C.name,sum(D.amount) as amount from C inner join D on C.id=D.main_id group by C.name
)B on A.name = B.name where ...
請教下大家,有沒有辦法讓A 連接B 也能走索引?
uj5u.com熱心網友回復:
請教下,有辦法嗎uj5u.com熱心網友回復:
你可以先連接C表再連接D表,但是不知道你用左連接的原因是A和C不完全匹配還是C和D不完全匹配,沒法給你改寫的sql。但是這種查詢是肯定可以改寫成兩次連接的
uj5u.com熱心網友回復:
我里面需要分組求和,這只是我簡化出來的,實際C,D關聯還要求其他的值,如果不改寫的話,A和B關聯沒辦法使用索引么uj5u.com熱心網友回復:
Mysql外層有主鍵索引的話,走索引,否則不走;就是你where條件后如果是A的主鍵索引的話,會走索引;你可以測驗驗證一下
可以參考文章:https://blog.csdn.net/dgutliangxuan/article/details/87997660
uj5u.com熱心網友回復:
可以走索引的,還要看看where的條件是什么A的Name和B的Name有索引的話,Name這塊會走索引的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/13330.html
標籤:MySQL
上一篇:怎么加快mysql的執行速度
下一篇:Mysql觸發器
