浅谈sqlserver数据库优化(一)----开光篇

  1. 云栖社区>
  2. 博客>
  3. 正文

浅谈sqlserver数据库优化(一)----开光篇

从此启程 2013-07-13 13:44:00 浏览337
展开阅读全文

今天暂时无事,风和日丽,万里无云。游山的、玩水的、遛麻雀的都闲的不亦乐乎,也忙的不亦乐乎。在这美好的季节,依旧躲在被窝或是电脑旁绞尽脑汁敲键盘的人们,也别有一番滋味。废话少说,言归正传。

赶上了一个最难就业季,总有很多不顺。前几天面试,被问了很多mvcsqlserver索引的问题,借这个时候来温习一下这些知识。

有一个人事数据库hrmis,里面的用户表叫A01,共7000条数据。

为了测试需要把这些数据,复制到另外一个测试数据库里。语句如下:

测试数据库为:funcunweiTest

use funcunweiTest
select * into peoTest from hrmis..a01

   –-输出结果(7311行受影响)

注:SELECT INTO INSERT INTO SELECT 两种表复制语句】

 

索引使用的目的,是在大数据量的情况下提高查询速度,几千条数据库是看不出来很大差别的。为了实现大数据,我们可以不断的执行下面这个语句(小心硬盘空间不足,):

 insert into peoTest select * from peoTest

 

--【在耗费了3G的空间后,用count进行统计有将近375万条数据,可以满足我们的测试了。】

查询耗时我用的办法时,查询之前先声明一个时间,查询之后再声明一个时间,然后获得时间差。 

datediff(millisecond,开始时间,结束时间)  --millisecond 毫秒

 

 

【测试一】查看peoTest表只查询一个列耗时情况。

declare @start datetime,@end datetime
set @start=getdate()
select A0188 from peotest
set @end=getdate()

select datediff(millisecond,@start,@end

--查询A0188耗时为:23706毫秒 A0188代表ID

--查询A019Z列耗时:30960毫秒 A019Z代表地址

 

 

【测试二】查看peoTest表查询所有列耗时情况

declare @start datetime,@end datetime
set @start=getdate()
select * from peotest
set @end=getdate()
select datediff(millisecond,@start,@end)

--查询所有列耗时为:201350毫秒

 

 

 【测试三】利用分页存储过程,查看某一页单列及所有列耗时情况。

  一个好用的分页存储过程

 

declare @start datetime,@end datetime

 set @start=getdate() 

exec selectbypage 'peoTest','*','A0188',20,10,0,0,'' 

set @end=getdate() 

select datediff(millisecond,@start,@end)

  --查询的所有列第10页,每页20条数据,耗时:22346毫秒

--只查询A0188列第10页,每页20条数据,耗时:12176毫秒

 

 

从以上三个测试例子,可以得出以下结论:

 1、尽量少使用 * 号,应只查询需要的字段,能减少不必要的消耗。 

 2、多使用分页,单页数据量较少,也可以提高查询效率。先写到这里,外面这么好的天气,不去打打球,运动一下身体,真太可惜了。身体是本钱。身体是一切基础!。

 

现在是在窗户旁坐着,还是自然风吹的爽啊。

欲知后事如何,且听下回分解。。。。

 

 

 

 

 

作者:从此启程/范存威

出处:http://www.cnblogs.com/fancunwei/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。如文章对您有用,烦请点个推荐再走,感谢! 本博客新开通打赏,鼠标移到右侧打赏浮动处,即可赏博主点零花钱,感谢您的支持!

网友评论

登录后评论
0/500
评论
从此启程
+ 关注