浅谈sqlserver数据库优化(一)----开光篇
今天暂时无事,风和日丽,万里无云。游山的、玩水的、遛麻雀的都闲的不亦乐乎,也忙的不亦乐乎。在这美好的季节,依旧躲在被窝或是电脑旁绞尽脑汁敲键盘的人们,也别有一番滋味。废话少说,言归正传。
赶上了一个最难就业季,总有很多不顺。前几天面试,被问了很多mvc和sqlserver索引的问题,借这个时候来温习一下这些知识。
有一个人事数据库hrmis,里面的用户表叫A01,共7000条数据。
为了测试需要把这些数据,复制到另外一个测试数据库里。语句如下:
测试数据库为:funcunweiTest
use funcunweiTestselect * 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 datetimeset @start=getdate()select * from peotestset @end=getdate()select datediff(millisecond,@start,@end)--查询所有列耗时为:201350毫秒
【测试三】利用分页存储过程,查看某一页单列及所有列耗时情况。
declare @start datetime,@end datetimeset @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、多使用分页,单页数据量较少,也可以提高查询效率。先写到这里,外面这么好的天气,不去打打球,运动一下身体,真太可惜了。身体是本钱。身体是一切基础!。
现在是在窗户旁坐着,还是自然风吹的爽啊。
欲知后事如何,且听下回分解。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器