所以,我有一个度数范围的mysql表,我应该用另一个度数范围进行查询。
目前我正在执行此查询:
SELECT * FROM degrees WHERE
start_date = '2017-01-01' AND finish_date = '2018-01-01'
AND (
(0.51797199999999 BETWEEN begin_degree AND end_degree)
OR (2.836271 BETWEEN begin_degree AND end_degree)
OR (6.953746 BETWEEN begin_degree AND end_degree)
OR (9.684033 BETWEEN begin_degree AND end_degree)
OR (13.877806 BETWEEN begin_degree AND end_degree)
...
)
问题是此度数表中有数百万行,每个查询都有或多或少200个OR语句。因此,查询需要7-8秒才能运行,我必须按要求执行更多其他类似的查询。
那么,有谁知道更好/更快的查询方式? 我还为start_date,finish_date,begin_degree和end_degree创建了索引。
提前致谢。
答案 0 :(得分:0)
我会说7-8秒这个查询并不是那么糟糕。我的一个建议是(start_date, finish_date begin_degree, end_degree)
的索引。这可能有助于表现。