2012-09-24 39 views
-1

我必须弄清楚一个数字(由于前导零存储为字符串)是否落入特定范围。范围是这样的:MySQL之间索引

12 - 14 
3456 - 4567 

1233435将被认为落入在第一范围(匹配是从左侧)。该数量可以有一个最大的20位和我有具有包含的所有范围文件。我导入了将尾随零增加到下限和尾部9以达到20的长度的范围。这是为了能够处理可变长度数字 - 它们在右侧用零填充,以便我可以执行下面的查询:

SELECT * FROM ranges WHERE 'my padded number' BETWEEN bound_lower AND bound_upper 

因为我有两三千范围我想提出一个索引的表,但我不知道我怎样才能做到这一点。

感谢, 孟德尔

回答

0

这似乎是你已经采取了有效的方法。要添加索引,您只需:

CREATE INDEX between_index on ranges (bound_lower, bound_upper); 

您可以通过使用EXPLAIN来验证它是否正在工作。

+0

:)如果我这样做MySQL根本不使用索引或者如果我强制它MySQL只使用bound_lower这是愚蠢的,如果bin在较低端 – Mendel

+1

这听起来像你也许应该问:“当我做了这个查询,它太慢了,我怎么能加快速度?“,但是你真正问到的是如何添加索引。有几种技术可以加速范围查询,您可以在这里找到它。寻找日期范围查询问题,相同的技术可以用于您的整数。 –