假设mytable是一个Oracle表,它有一个名为id的字段.id的数据类型是NUMBER(8).比较以下查询:
select * from mytable where id like '715%'
和
select * from mytable where id between 71500000 and 71599999
我认为第二个更有效,因为我认为"数字比较"需要的数量少于汇总语言指令而不是"字符串比较".我需要确认或更正.请确认/更正并抛出与任一运营商相关的任何进一步评论.
更新:我忘了提及一条重要的信息. 在这种情况下,id必须是一个8位数字.
看起来第二个查询的执行计划更有效.
第一个查询是对id进行全表扫描,而第二个查询则不是.
我的测试数据:
第一次查询的执行计划:

第二次查询的执行计划:

如果您只想要71500000和71599999之间的值,那么第二个更有效.第一个也将返回7150-7159,71500-71599等之间的值,依此类推.您可能需要筛选不必要的结果,或者编写另外几行代码来过滤掉其余部分.对于您似乎想要做的事情,第二种选择肯定更有效.