首页 新闻 会员 周边 捐助

sqlserver删除慢

0
[已解决问题] 解决于 2018-05-18 10:14

在程序代码中执行删除数据很慢大概5s+ 但在ssms中执行很快,毫秒级别,

同一条语句,在程序中使用参数方式,拼接语句方式在执行就是慢

清除执行计划,结果一样,多次循环测试,结果一样,程序中执行就是慢open 数据库都很快,就是执行慢。

光明中的黑手的主页 光明中的黑手 | 初学一级 | 园豆:135
提问于:2018-05-10 19:51
< >
分享
最佳答案
0

建议提供一下程序中对应的代码

奖励园豆:5
dudu | 高人七级 |园豆:29817 | 2018-05-10 20:07
delete from [W_WardrobeMatches] where uid=@uid and itemid=@wid and wtype=@wtype   
这个表大概几千万数据   uid 建立了索引    其他两个值没有索引,我直接用参数方式,以及字符串拼接参数方式,以及删除库执行计划都很慢代码跟踪到Execute就卡半天,在open数据库的时候没卡顿
光明中的黑手 | 园豆:135 (初学一级) | 2018-05-11 15:49

同一条语句在ssms客户端执行了无数次,无一次卡顿

光明中的黑手 | 园豆:135 (初学一级) | 2018-05-11 15:51

@光明中的黑手: 这个量级的数据,都要建索引,建议把uid的索引改为包含uid,itemid,wtype这3个字段的索引

dudu | 园豆:29817 (高人七级) | 2018-05-11 16:02

@dudu: 但我没想通为啥ssms 可以高效删除

光明中的黑手 | 园豆:135 (初学一级) | 2018-05-11 17:01

@光明中的黑手: 你是怎么清除执行计划缓存的?

dudu | 园豆:29817 (高人七级) | 2018-05-11 20:20

@dudu: DBCC FREEPROCCACHE

光明中的黑手 | 园豆:135 (初学一级) | 2018-05-12 12:39

@光明中的黑手: 试试 SQL Server 执行计划缓存 中清除执行计划缓存的方法:

--清空缓存中的执行计划
DBCC FREEPROCCACHE; -- ( plan_handle | sql_handle | pool_name )
GO
-- 清空制定数据库的执行计划
DBCC FLUSHPROCINDB(<dbid>);
GO
---清空缓存中的数据
DBCC DROPCLEANBUFFERS;

---清空特定缓存存储区中的执行计划
DBCC FREESYSTEMCACHE(<cachestore>) -- 'ALL', pool_name, 'Object Plans', 'SQL Plans', 'Bound Trees'
GO
dudu | 园豆:29817 (高人七级) | 2018-05-12 12:47

@dudu: 哎,我也是无语了,我还没执行你写的这些呢,我说在试试,今天试效率又是正常的,很快,我没做任何处理。有点莫名其妙,昨天怎么试都不行

光明中的黑手 | 园豆:135 (初学一级) | 2018-05-12 13:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册