索引的魅力

今天有空,来测试一下mssql2005的一条查询语句在聚集索、索引、无索引等情况下的查询速度及IO情况,表结构如下,共222994条记录。

CREATE TABLE [dbo].[TaoBaoTrade_0001](

    [nick] [nvarchar](100) NOT NULL,

    [iid] [char](32) NOT NULL,

    [created] [datetime] NOT NULL,

    [buyer_nick] [nvarchar](100) NOT NULL,

    [title] [nvarchar](100) NOT NULL,

    [price] [real] NOT NULL,

    [num] [int] NOT NULL,

    [type] [nvarchar](50) NOT NULL

) ON [Taobao2]

查询语句如下:

set statistics time on

set statistics io on

select * from taobaotrade_0001 where nick='紫紫粉粉' and datediff(day,created,'2009-04-18')=0

set statistics io off

set statistics time off

无索引查询情况:

SQL Server 执行时间:

   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(4 行受影响)

表 'TaoBaoTrade_0001'。扫描计数 1,逻辑读取 4802 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:

   CPU 时间 = 78 毫秒,占用时间 = 89 毫秒。

(nick)索引查询情况:

SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(nick,Created)索引查询情况:

SQL Server 执行时间:

   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(4 行受影响)

表 'TaoBaoTrade_0001'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:

   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

(nick,Created)聚集索引查询情况:

 SQL Server 执行时间:

   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

 (4 行受影响)

表 'TaoBaoTrade_0001'。扫描计数 1,逻辑读取 5 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:

   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

    通过此次测试,可以很明显看出有索引和无索引的区别,聚集索引比索引快一点。生活中也是这样,资料不仅有一个目录就可以了,最好还要按目录来存储,这样查找起来会更快。 还有使用datedif函数也是会使用索引的。

(4 行受影响)
表 'TaoBaoTrade_0001'。扫描计数 1,逻辑读取 53 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 34 毫秒。

SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值