sqlserver 处理效率问题常用语句(索引相关等等)

–查索引碎片

SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, 
ind.name AS IndexName, indexstats.index_type_desc AS IndexType, 
indexstats.avg_fragmentation_in_percent 
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats 
INNER JOIN sys.indexes ind  
ON ind.object_id = indexstats.object_id 
AND ind.index_id = indexstats.index_id 
WHERE ind.name in( 'IDX_DCEI_COMP_YEAR_MONTH_new','pk_dept_cost_emp_ini','PK_SYS_DEPT','PK__sys_emp__1299A86160C0635B','PK_SYS_EMP_TYPE','PK__sys_emp___1062D97663E87F77')--indexstats.avg_fragmentation_in_percent > 50
ORDER BY indexstats.avg_fragmentation_in_percent DESC

–清执行计划缓存

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

–创建临时表

select * into dept_cost_emp_ini from aa

–查锁表

select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
from   sys.dm_tran_locks where resource_type='OBJECT'
DECLARE
 @spid INT
 SET @spid = 52--锁表进程
DECLARE
 @SQL VARCHAR (1000)
 SET @SQL = 'kill ' + CAST (@spid AS VARCHAR) EXEC (@SQL)

–所有索引重建

USE My_Database; 
DECLARE @name varchar(100)

DECLARE authors_cursor CURSOR FOR  Select [name]   from sysobjects where xtype='u' order by id

OPEN authors_cursor

FETCH NEXT FROM authors_cursor  INTO @name

WHILE @@FETCH_STATUS = 0 
BEGIN    

 DBCC DBREINDEX (@name, '', 90)

 FETCH NEXT FROM authors_cursor     INTO @name 
END

deallocate authors_cursor

–查询所有的表名及空间占用量情况

SELECT  OBJECT_NAME(id) tablename ,
         8 * reserved / 1024 reserved ,
         RTRIM(8 * dpages) AS 'used(kb)' ,
         8 * ( reserved - dpages ) / 1024 unused ,
         8 * dpages / 1024 - rows / 1024 * minlen / 1024 free
 FROM    sysindexes
 WHERE   indid = 1
 ORDER BY reserved DESC 

–查询数据库中所有的表名及行数

SELECT  a.name ,  b.rows  FROM    sysobjects AS a
       INNER JOIN sysindexes AS b ON a.id = b.id
 WHERE   ( a.type = 'u' )  AND ( b.indid IN ( 0, 1 ) )
 ORDER BY b.rows DESC

—手动更新统计计划

update STATISTICS  dbo.dept_cost_emp_ini

—使用SQL语句检测执行慢的SQL语句:

SELECT 
total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
SUBSTRING(qt.text,qs.statement_start_offset/2+1, 
(CASE WHEN qs.statement_end_offset = -1 
THEN DATALENGTH(qt.text) 
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1) 
AS [使用CPU的语法], qt.text [完整语法],
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
AND total_worker_time>5000000
ORDER BY total_worker_time DESC

–修改密码
–如果提示‘帐户当前被锁定,所以用户 ‘用户名’ 登录失败。系统管理员无法将该帐户解锁’

ALTER LOGIN 用户名 ENABLE ;
GO
ALTER LOGIN 用户名 WITH PASSWORD = 'password' unlock, check_policy = off,
check_expiration = off ;
GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zzzz_zzzz_zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值