如何为此查询创建索引并使其获得更好的性能?

时间:2015-08-13 04:51:25

标签: mysql indexing

任何人都可以展示如何为此查询创建索引并提高性能吗?

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);

2 个答案:

答案 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可能会给你一个夸大的答案。