0

所以,我有一个度数范围的 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 创建了索引。

提前致谢。

4

1 回答 1

0

我会说这个查询 7-8 秒还不错。我的一个建议是在(start_date, finish_date begin_degree, end_degree). 这可能有助于提高性能。

于 2017-04-13T19:21:40.143 回答