首页 新闻 搜索 专区 学院

SQL server 聚焦索引和非聚焦索引对于查询的影响

0
悬赏园豆:10 [已解决问题] 解决于 2021-06-26 09:37

请教各位大侠,
1·我创建了 两个表格Product1和Product2(字段格式都一样)如下:
CREATE TABLE Product(
Id UNIQUEIDENTIFIER PRIMARY KEY,--自增ID
NAME VARCHAR(50) NOT NULL,--名称
Price DECIMAL(18,2) NOT NULL,--价格
myTime DateTime--时间
)

2· 方式1,我在Id字段设置聚焦索引,myTime字段设置非聚焦索引,对应Product1
方式2,我在Id字段设置非聚焦索引,myTime字段设置聚焦索引,对应Product2

3· 我在Product1和Product2分别插入了280万条数据。
4· 在使用select myTime,Name,Price from Product1/Productile2 where myTime>='2020-12-1' and myTime<='2020-12-3'筛选所有的数据时(筛选时间段涵盖了我插入数据的时间),
方式 1的执行时间为18秒左右,执行计划提示:聚焦索引扫描 CLUSTERED index scan(100%)
方式 2的执行时间为18秒左右,执行计划提示:聚焦索引扫描 CLUSTERED index seek(100%)
疑问:网上说聚焦索引会直接影响查询速度,但是我的测试基本没有差异,在学习博客园中《sql-索引的作用(超详细)》一文中,提到2秒左右的时间就可查询出几十万的数据,百度中也有很多说是百万级查询5秒内搞定,也都提到了聚焦索引起到的作用,但是我的实验查询的时间始终徘徊在18到20秒左右,无论是CLUSTERED index scan(100%)还是CLUSTERED index seek(100%),请问各位大侠,5秒内查处出百万数据是否真的存在,同时以一个简单的表(Id,name,Price ,creattime),是否能做到5秒内查询出百万的数据呢?
请大侠们多讲几句,我这基础有点差,谢谢

备注:1·无论聚焦索引还是非聚焦索引,都不是复合的,但是单字段的;
2·使用的SQL2005;

rossi1984的主页 rossi1984 | 初学一级 | 园豆:24
提问于:2020-12-02 13:20
< >
分享
最佳答案
0

建议开启下面2个选项,看看时间耗在了哪个地方?

set statistics io on
set statistics time on
收获园豆:8
dudu | 高人七级 |园豆:37154 | 2020-12-02 14:42

估计耗时在硬盘读写上了,根据索引找到了所需要的数据,但是查询的字段并不包含在索引中,所以需要回表,读磁盘中的数据

大志若愚 | 园豆:2082 (老鸟四级) | 2020-12-02 18:31
其他回答(1)
0

点那个执行计划看看,消耗在哪

收获园豆:2
不知道风往哪儿吹 | 园豆:1927 (小虾三级) | 2020-12-03 13:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册