我有一个大表,其中有两列:事件日期国家这个查询非常快:
select distinct event-date from my_table
这个查询也非常快速:
select * from my_table where country = 'US'
但是,此查询非常慢:
select distinct event_date from my_table where country = 'US'
我尝试添加所有索引组合,包括两列上的一个。没有什么能让第三个查询更快。有什么见解吗?
uyto3xhc1#
您是否尝试过将结果暂存到临时表中,添加索引,然后从那里完成查询?不确定这在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;
ttisahbt2#
ALTER TABLE my_table ADD INDEX my_idx (event_date, country);
2条答案
按热度按时间uyto3xhc1#
您是否尝试过将结果暂存到临时表中,添加索引,然后从那里完成查询?不确定这在mysql中是否有效,但这是我在mssql中经常成功使用的技巧。
ttisahbt2#