日期:2014-05-17  浏览次数:20561 次

呃…字段为日期型,聚集索引,用between还是>=
1、字段datecheck为日期型
2、字段为聚集索引
3、表里有2013-5-1到2013-5-30的数据
4、比如查询2013-5-10至2013-5-20的数据,使用between and好还是>=好?

select * from 表 where datecheck between 开始日期 and 结束日期
select * from  表 where datecheck>=开始日期 and datecheck<=结束日期

其实数据量有很多很多,想充分利用聚集索引的性能

------解决方案--------------------
你打开执行计划查看cost开销就会发现,这二者并无而致,关键还是执行计划的选取,走索引的路线
所产生的开销,然后hash join或nested join综合产生的cost要少,然后产生的logical reads要少,
这是理解执行计划的key
------解决方案--------------------
bewteen的效率大于>=.
------解决方案--------------------
between and等效>= and <=
在查询计划中,between and 也常被转换成>= and <=
应该是等效的吧
------解决方案--------------------
between ..and .. 跟 >= .. <= 应该是一样的.

假设数据是平均分布的,
查询的2013/5/10至2013/5/20数据占表总数据(2013-5-1到2013-5-30)的33%,
SQL引擎将会选择索引扫描(index scan)的方式.