sqlserver 数据库之性能优化

    数据库性能优化有一下几个方面:

       1、把数据、日志、索引放到不同的I/O设备上,增加读取速度;

  2、纵向、横向分割表,减少表的尺寸;

  3、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0);

       4、注意UNion和UNion all 的区别。UNION all好;

  5、注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢。重复的记录在查询里是没有问题的 ;

  6、查询时不要返回不需要的行、列 ;

 

测试:

create table person1 (UserID int,pwd char(20),OtherInfo char(360),modifydate datetime)
declare @i int
set @i=0
while @i<800000
begin
insert into person1
select cast(floor(rand()*100000) as int), cast(floor(rand()*100000) as varchar(20)),
cast(floor(rand()*100000) as char(360)), GETDATE()
set @i=@i+1
end


declare @d datetime
set @d=getdate()
/*你的SQL脚本开始* 1387毫秒*/
select * from person1 where userid='22004' and modifydate>='2020-04-01 00:00:00.000'
/*你的SQL脚本结束*/
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())


----- 在modifynum 上创建聚集索引
declare @d datetime
set @d=getdate()
/*你的SQL脚本开始* 20毫秒*/
select * from person1 where userid='22004' and modifydate>='2020-04-01 00:00:00.000'
/*你的SQL脚本结束*/
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

在按照日期查询的字段上创建聚集索引,速度提升10倍
CREATE clustered index index_name_test1
ON person1(字段)  --建立Id列聚集索引

删掉之前的聚集索引,(因为一张表只能有一个聚集索引)
在用户ID和日期上创建聚集索引,时间进一步得到提升,1毫秒!!!

这里只是一个简单的例子,表明创建聚集索引可以提升性能,此外,大家还可以根据具体的环境创建合适的索引

posted on 2021-03-05 17:01  @atn  阅读(666)  评论(0编辑  收藏  举报

导航