Mysql - 过滤表格范围内的度数列表

时间:2017-04-13 19:19:45

标签: mysql sql indexing 360-degrees

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

我会说7-8秒这个查询并不是那么糟糕。我的一个建议是(start_date, finish_date begin_degree, end_degree)的索引。这可能有助于表现。