如题,怎么样对下面的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.png3、删除上面步骤添加的索引,给关联表door_device的door_id字段加上普通索引,执行查询,可以看到查询时间只需要原来的三分之一,速度显著提高了,如图:
image.png
4、同时把上面2、3步骤的索引都加上,结果和只加上3步骤的索引一样,如图:
image.png
总结:
通过上面各个步骤的尝试可以发现,联表查询时候索引应该加在LEFT JOIN关联表的关联字段上,比如本例中的door_device表door_id字段。
网友评论