ado*_*lot 5 performance sql-server-2005 database-design sql-server index-tuning
我想加快以下代码
delete from ssn_sdo
where
(art_id=@art_id and skl_id=@skl_id and @level=0 )
or (art_id=@art_id and skl_id=@skl_id and @level=1 and tip=@tip)
or (art_id=@art_id and skl_id=@skl_id and doc_id = @doc_id)
Run Code Online (Sandbox Code Playgroud)
我的服务器是 MS SQL-Server 2005。
art_id
,skl_id
和doc_id
是整数,而tip是varchar(10)
类型。
我想在ssn_sdo
表上创建一个索引,所以这个删除会更快。
我正在考虑做的是制作三个索引,每个索引都适用于每种情况:
doc_id (ASC), art_id (ASC), skl_id (ASC)
skl_id (ASC), art_id (ASC), tip (ASC)
skl_id (ASC), art_id (ASC),
Run Code Online (Sandbox Code Playgroud)
或者有没有更好的方法来制作一个包含所有三种情况的索引。
我对索引很小心,因为我不想减慢此表中的插入速度。
有点尴尬,我看不到如何评论,但我想问一下为什么你的情况不是:
delete from ssn_sdo
where
art_id=@art_id
and skl_id=@skl_id
and (@level = 0 or (@level = 1 and tip=@tip) or doc_id = @doc_id)
Run Code Online (Sandbox Code Playgroud)
在添加任何其他索引之前或之后,不确定这是否有帮助,但是查看执行计划(实际)并查看是否实现了任何好处会很有趣。
归档时间: |
|
查看次数: |
407 次 |
最近记录: |