任何人都可以展示如何为此查询创建索引并提高性能吗?
SELECT COUNT(*) AS `count`
FROM `epowergateway`.`error_logs` AS `ErrorLog`
LEFT JOIN `epowergateway`.`devices` AS `Device` ON (`ErrorLog`.`device_id` =`Device`.`id`)
WHERE `status` = 'open' AND `type` = 'snmptrap' AND `traptype` = 'LCA'
AND device_id IN (7, 2, 4, 1, 3, 6, 5, 8, 10, 11);
答案 0 :(得分:0)
device.id应该是主键。
应该将ErrorLog.device_id编入索引。
假设两个字段都应该是整数类型。
另外,根据查询,我假设大多数数据过滤都将基于device_id,因此不需要其他字段的索引。
即使您可以在(7,2,4,1,3,6,5,8,10,11)中基于主键而不是索引键搜索device.id.
进一步分享您的问题,以便根据该方面进行检查。
答案 1 :(得分:0)
INDEX(status, type, traptype, device_id)
如果那些在同一张表中。
注意:COUNT(*)
JOIN
可能会给你一个夸大的答案。