请教各位大侠,
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;
建议开启下面2个选项,看看时间耗在了哪个地方?
set statistics io on
set statistics time on
估计耗时在硬盘读写上了,根据索引找到了所需要的数据,但是查询的字段并不包含在索引中,所以需要回表,读磁盘中的数据
点那个执行计划看看,消耗在哪