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

如题,怎么样对下面的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字段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容