所以,我有一个度数范围的 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 秒才能运行,我必须按请求执行更多 10 个其他类似查询。
那么,有人知道更好/更快的查询方式吗?我还为 start_date、finish_date、begin_degree 和 end_degree 创建了索引。
提前致谢。