代码之家  ›  专栏  ›  技术社区  ›  stepanian

慢速移动与何处不同

  •  1
  • stepanian  · 技术社区  · 7 年前

    我有一个大表,其中有两列:

    • 活动日期
    • 国家

    此查询非常快速:

    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 回复  |  直到 7 年前
        1
  •  1
  •   e_i_pi    7 年前

    您是否尝试过将结果暂存到临时表中,添加索引,然后从那里完成查询?不确定这在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;
    
        2
  •  0
  •   Alex    7 年前
    ALTER TABLE my_table ADD INDEX my_idx (event_date, country);