暂无图片
sql server 同一个sql,查询有时很快,有时很慢是什么原因?
我来答
分享
暂无图片 匿名用户
sql server 同一个sql,查询有时很快,有时很慢是什么原因?

sql server 同一个sql,查询有时很快,有时很慢是什么原因?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
chengang

是调用存储过程吗?

存储过程有参数嗅探问题。你重新编译一下应该就可以了。

暂无图片 评论
暂无图片 有用 0
shunwahⓂ️

在实际操作中如果出现SQL Server数据库查询速度慢的情况原因:

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)

2、I/O吞吐量小,形成了瓶颈效应。

3、没有创建计算列导致查询不优化。

4、内存不足

5、网络速度慢

6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)

7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)

8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。

9、返回了不必要的行和列

10、查询语句不好,没有优化

暂无图片 评论
暂无图片 有用 0
wzf0072

1:查看SQL等待类型, 

SELECT dest.text AS [执行中的SQL] , der.start_time AS SQL开始运行的时间,   datediff(ss,der.start_time,GETDATE()) AS SQL已执行时长秒, der.session_id AS 会话ID, der.command AS 命令类型 ,   des.[host_name] 应用服务器主机名, des.login_name AS 账号名,  des.[program_name] AS 应用程序名 , dec.client_net_address AS 应用服务器IP, der.status AS 运行状态 , der.wait_type AS 等待类型, DB_NAME(der.database_id) AS 访问的数据库

 FROM sys.dm_exec_requests der

 INNER JOIN sys.dm_exec_connections dec ON der.session_id = dec.session_id

 INNER JOIN sys.dm_exec_sessions des ON des.session_id = der.session_id 

 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS dest

WHERE des.is_user_process = 1

order by 2 END

其他:

1、检查是否发生阻塞,如果被其他SQL阻塞了,在运行时间会变长;检查SQL sp_who2 active;

2、检查cpu并行度设置,若设置为0,则不限制CPU并行度,负载较高的情况下会大量出现(CXPACKET等待),oltp服务器建议降低并行度;检查方法:实例属性--高级--并行--最大并行度

3、大批量插入、更新导致统计信息不准确,可以更新统计信息:update statistics table_name

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏