小白的我,会写sql,就觉得自己大神了,但是实际项目中,发现自己写的sql速度太慢了,看sql觉得没问题啊,度娘了之后发现sql性能调优的方法。
掌握知识:
--建聚集索引CREATE CLUSTERED INDEX INDEX_Userid ON T_UserInfo (Userid)--建非聚集索引CREATE NONCLUSTERED INDEX INDEX_Userid ON T_UserInfo (Userid) incloud(UserName)--删除索引DROP INDEX T_UserInfo.INDEX_Userid--显示有关由Transact-SQL 语句生成的磁盘活动量的信息SET STATISTICS IO ON--关闭有关由Transact-SQL 语句生成的磁盘活动量的信息SET STATISTICS IO OFF--显示[返回有关语句执行情况的详细信息,并估计语句对资源的需求]SET SHOWPLAN_ALL ON--关闭[返回有关语句执行情况的详细信息,并估计语句对资源的需求]SET SHOWPLAN_ALL OFF---------------------------------------------------------------------------Tips:SET STATISTICS IO 和 SET SHOWPLAN_ALL 是互斥的。
查看分析sql性能:
选中待执行sql,快捷键Ctrl+L。
这段话对我帮助很大:
如果以上你都明白了,那么你可能已经对SQL的优化有初步新的想法了,网上一堆堆的SQL优化的文章真的是那样吗?你自己试试就知道了,而不必盲目去记那些东西,自己试试,看看MSSQL到底是怎么来执行就明白了。
在我举的例子中,用的是聚集索引扫描,字段是字母加数字,大家可以试试看纯数字的、字母的、汉字的等等,了解下MMSQL会如何改变SQL语句来利用索引。然后再试试非聚集索引是什么情况?用不用索引和什么有关?子查询MSSQL是如何执行?IN用不用索引,LIKE用不用索引?函数用不用索引?OR、AND、UNION?子查询呢?在这里我不一一去试给大家看了,只要知道了如何去看MSSQL的执行计划(图形和文本),很多事情就很明朗了。