+ -
当前位置:首页 → 问答吧 → 还是没搞懂的一个2008的分区表查询的问题

还是没搞懂的一个2008的分区表查询的问题

时间:2011-12-19

来源:互联网

源表 source_table ,分区表 partition_table,两个表主键和索引都一致

主键为DATE, CUST_CODE, OCCUR_DATE, SERIAL_NO, ORDER_NO, CURRENCY_TYPE,非聚集

非聚集索引1 CUST_CODE, 非聚集索引2 DATE 

分区表分区列是DATE,分区函数为RANGE RIGHT('20101101','20101201','20110101','20110201')

SELECT DATE FROM source_table WHERE DATE BETWEEN '20101201' AND '20101230' --语句1

SELECT DATE FROM partition_table WHERE DATE BETWEEN '20101201' AND '20101230' --语句2

这两句语句执行下来 语句1要快于语句2,查看执行计划,都用到了索引2,分区表查询语句中实际分区计数是5,也就是分区表的查询并没有区分查询的到底是哪个分区

疑问:请问查询语句中的列完全被索引覆盖,为什么语句2 不能分清楚到底是查哪个分区呢?

SELECT TOP 20000 * FROM source_table WHERE DATE BETWEEN '20101201' AND '20101230' --语句3

SELECT TOP 20000 * FROM partition_table WHERE DATE BETWEEN '20101201' AND '20101230' --语句4

这两句语句执行下来 语句4要快于语句3,查看执行计划,都是全表扫描,分区表查询语句中实际分区计数是1,也就是分区表的查询分清了使用哪个分区

疑问:语句4都没使用到索引,怎么会分清使用了哪个分区?

初学分区表,目前对分区表的一些查询上有很多疑问,故想请教一下高手,请帮忙解答一下我的问题,谢谢。

作者: mamamiya5613   发布时间: 2011-12-19

多看看就懂了.

作者: qianjin036a   发布时间: 2011-12-19

引用 1 楼 qianjin036a 的回复:
多看看就懂了.

能帮忙解释一下为什么会这样吗,最近做了很多这个测试,但是还是得不出结论来。
需要点播一下。

作者: mamamiya5613   发布时间: 2011-12-19