Sql Server数据库优化的一些高级方法2

欢欢欢欢 发表于 2018-5-6 17:55

1,查询没有使用参数化的语句,参数化很重要也很简单

1)脚本每次进入数据库执行,只编译一次。能提高性能

2)众所周知的简单

SELECT TOP 10

        MAX(Text) '示例语句' ,

        SUM(CAST(size_in_bytes AS BIGINT)) / 1024. / 1024. AS '占用服务器内存Size(MB)' ,

        COUNT(1) '缓存计划数'

FROM    sys.dm_exec_cached_plans

        CROSS APPLY sys.dm_exec_sql_text(plan_handle) 

  --cross apply sys.dm_exec_text_query_plan(plan_handle,default,default)

WHERE   Objtype IN ( 'Adhoc', 'Prepared' )

        AND text NOT LIKE '(@%'

        AND text NOT LIKE '%sys%'

GROUP BY LEFT(TEXT, 20)

HAVING  COUNT(1) > 10

 

ORDER BY '缓存计划数' DESC

 

2,查看数据库脚本的cpu和磁盘统计

 

SET statistics time on

SET statistics io on

只在当前查询页起作用,关掉当前查询tab即关掉了

3,显示估计执行计划,根据建议可直接建立缺省索引

根据建议自动建立缺省索引

4,根据前一篇文章(摸这里)可查询到频繁查询而需要建立的索引。好的索引可以极大提高性能。

建立索引的原则:

1)能极大减少数据量的字段放在前面;

2)第一个字段的不同决定要建立几个索引(下图一般需要三个)

3)索引需要的字段一般以最多的为准,被用到最多的放在前面

创建索引原则

5,附件中为产生需要重建的索引的脚本的存储过程的生成脚本(附件摸这里

其中sql server 2012商务智能版本不支持脚本中的WITH(ONLINE=ON),可根据具体情况将其去掉。

定期执行该存储过程,清理重新生成索引,清理索引碎片。

6,创建索引的最简单语句

 

Create index IX_t_CustVCard_YGCode 

on [t_CustVCard]([YGCode]) 

include([CustUniqCode])

7,SqlServer的一些基本辅助函数:

sp_helpindex 标明 -------------------查询这个表有多少个索引

8,备份数据库策略:(附件摸这里

举个例子:一周做一个完整备份,一个小时做一次日志备份,还原的时候依次还原即可。脚本见附件。