我有一个看起来像这样的表:
ID StartRange EndRange
----------------------------
1 1 3
2 4 8
3 9 12
依此类推,这样就有超过 500 万条记录。最后一条记录如下所示:
ID StartRange EndRange
---------------------------------
5235976 9894727374 9894727378
换句话说,每条记录的StartRange
andEndRange
永远不会重叠。
我需要做一个查询,找到与范围匹配的数字的相应 ID:
SELECT ID FROM BigTable WHERE '5000000' BETWEEN StartRange AND EndRange;
不幸的是,这个查询需要几秒钟才能完成。我需要对其进行优化,使其花费最少的执行时间。我做了一些研究,看起来添加索引没有帮助,因为它仅适用于数字恰好是StartRange
orEndRange
值,但不是介于两者之间。
有没有人有任何提示或技巧可以用来缩短执行时间?理想情况下,如果可能的话,我希望它低于 1 秒。