[英]How can I optimize this SQL query with 100.000 records?
有我的 SQL 查询。 表 system_mailer 用于记录发送的电子邮件。 当我想搜索一些数据时,查询时间为 10 秒。 有可能以任何方式优化此查询吗?
SELECT `ID`
FROM `system_mailer`
WHERE `group` = 'selling_center'
AND `group_parameter_1` = '1'
AND `group_parameter_2` = '2138'
Timins 大约几秒钟,如何优化?
您可能会发现以下 4 列索引有助于提高性能:
CREATE INDEX idx ON system_mailer (`group`, group_parameter_1, group_parameter_2, ID);
MySQL 应该能够在您当前的查询中使用此索引。 顺便说一句,如果您使用的是 InnoDB,并且ID
是主键,那么您可以将它从显式索引定义中删除,然后使用它:
CREATE INDEX idx ON system_mailer (`group`, group_parameter_1, group_parameter_2);
请避免使用保留的 MySQL 关键字(如group
命名您的列和表。 因为您做出了这个设计决定,您现在将被迫永远使用反引号(丑陋)转义该列名称。
just be sure you have a composite index on table system_mailer for the columns
(`group`, `group_parameter_1`, `group_parameter_2`)
并且您可以使用冗余将 id 添加到索引以避免查询中的数据表访问
(`group`, `group_parameter_1`, `group_parameter_2`, ID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.