慢MySQL与何处不同

时间:2018-12-23 22:41:53

标签: mysql

我有一个大表,其中有两列(以及其他列):

  • event_date
  • 国家

此查询非常快:

select distinct event-date from my_table

此查询也非常快:

select * from my_table where country = 'US'

但是,此查询非常慢:

select distinct event_date from my_table where country = 'US'

我尝试添加所有索引组合,包括两个列中的一个。没有什么可以使第三个查询更快。

有什么见解吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试过将结果分阶段存储在临时表中,添加索引,然后从那里完成查询?不知道这是否可以在MySQL中使用,但这是我经常在MSSQL中成功使用的技巧。

CREATE TEMPORARY TABLE IF NOT EXISTS staging AS (
    SELECT event_date FROM my_table WHERE country = 'US'
);
CREATE INDEX ix_date ON staging(event_date);
SELECT DISTINCT event_date FROM staging;

答案 1 :(得分:0)

ALTER TABLE my_table ADD INDEX my_idx (event_date, country);