在JOIN上优化GROUP BY

时间:2018-05-24 21:20:23

标签: mysql sql

numpy

查询特定日期时,上面的查询没有GROUP BY子句很快。

问题是当我添加GROUP BY时,即使我在HAVING子句中添加特定的 Date ,它也变得非常慢。

我已经为日期 AssetClass SecID 列添加了 htable 的索引货币 MaturityDate ,以及(日期帐户货币, MaturityDate )。

这是在MySQL中完成的。你有关于如何加快查询的任何提示(我打算使用查询来查看定义)?谢谢!

1 个答案:

答案 0 :(得分:1)

我能看到的第一个可以改进查询性能的索引是:

htable (AssetClass, Date, SecID) -- if Date is more selective than SecID

htable (AssetClass, SecID, Date) -- if SecId is more selective than Date

现在,如果您想更进一步,可以通过以下方式索引SUBSTR(h2.Ticker, 7, 3)的虚拟列:

alter table htable add ticker_currency varchar(3) 
  generated always as (SUBSTR(h2.Ticker, 7, 3)) virtual;

然后,添加索引:

htable (AssetClass, SecID, Date, ticker_currency)