繁体   English   中英

如何使用 100.000 条记录优化此 SQL 查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM