如題屁置,怎么樣對下面的sql語句加索引焊夸,才能提高其執(zhí)行速度呢?請看下文分析蓝角。
SELECT
m.id AS id,
m.`name` AS `name`,
dd.device_id AS deviceId
FROM
apartment_door m
LEFT JOIN door_device dd ON dd.door_id = m.id AND dd.isdel = 'N'
WHERE
m.isdel = 'N'
1阱穗、在沒有加索引的情況下,查詢465條數(shù)據(jù)用時大概30毫秒左右使鹅,如圖
image.png
2揪阶、先對主表apartment_door的主鍵id字段加上普通索引,測試發(fā)現(xiàn)查詢效率并沒有什么提高并徘。如圖:
image.png
3遣钳、刪除上面步驟添加的索引扰魂,給關(guān)聯(lián)表door_device的door_id字段加上普通索引麦乞,執(zhí)行查詢,可以看到查詢時間只需要原來的三分之一劝评,速度顯著提高了姐直,如圖:
image.png
4、同時把上面2蒋畜、3步驟的索引都加上声畏,結(jié)果和只加上3步驟的索引一樣,如圖:
image.png
總結(jié):
通過上面各個步驟的嘗試可以發(fā)現(xiàn)姻成,聯(lián)表查詢時候索引應(yīng)該加在LEFT JOIN關(guān)聯(lián)表的關(guān)聯(lián)字段上插龄,比如本例中的door_device表door_id字段。