联表查询的MySQL语句怎么加索引

2017-11-13  本文已影响0人  李北北

如题,怎么样对下面的sql语句加索引,才能提高其执行速度呢?请看下文分析。

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条数据用时大概30毫秒左右,如图


image.png

2、先对主表apartment_door的主键id字段加上普通索引,测试发现查询效率并没有什么提高。如图:

image.png

3、删除上面步骤添加的索引,给关联表door_device的door_id字段加上普通索引,执行查询,可以看到查询时间只需要原来的三分之一,速度显著提高了,如图:


image.png

4、同时把上面2、3步骤的索引都加上,结果和只加上3步骤的索引一样,如图:


image.png

总结:

通过上面各个步骤的尝试可以发现,联表查询时候索引应该加在LEFT JOIN关联表的关联字段上,比如本例中的door_device表door_id字段。

上一篇下一篇

猜你喜欢

热点阅读