sql server索引优化语句
第一步 建一个测试表
--create table TestUsers
--(
-- Id int primary key identity(1,1),
-- Username varchar(30) not null,
-- Password varchar(10) not null,
-- CreateDateTime datetime not null
--)
第二步 插入100w数据 大概1分钟执行时间
----插入数据
declare @id int, @username varchar(100), @password varchar(10)
set @id=0
set @username='user'
set @password='pwd_'
while @id<1000000
begin
insert into TestUsers(Username,Password,CreateDateTime)
values (@username+convert(varchar(100),@id),@password+convert(varchar(100),@id),GETDATE())
set @id=@id + 1
end
第三步 开始针对测试建立相应索引 可以直接数据库在表 索引中创建
也可以使用 create index 语句去创建索引,这个就根据自己的测试来删除建立聚集 非聚集索引了
第四步 开始执行sql查看索引效果 需要一个查询执行时间来看
declare @d datetime
set @d=getdate()
--你具体的select 语句
--select id,username from TestUsers where id>10
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
第五步 查看现有的索引信息 利用系统存储过程查看 是什么类型的 哪些字段
exec dbo.sp_helpindex TestUsers
接下里 就是测试各种索引的花费情况
- 主键默认的 聚集索引 来查看100w数据
select * from TestUsers 不带列名全局查询
select id,username,password,createdatetime from TestUsers 带列名查询
通过执行计划可以看到 这都是用的 主键的聚集索引
可以试着写不同的语句 来查看 对应的执行情况 以及是不是使用了索引