触发器中可不可以为inserted表 和 deleted 表建立索引 ?
在触发器中, 发现对inserted t 和 deleted表的查询操作都是Table Scan 方式 , 数据量大时很影响效率.
比如有表TabA
试着在Update触发器中用如下语句加索引
create index idx_xxx on inserted (column_name)
实际上此索引加到了表 TabA 上, 对inserted 的查询没有任何用处.
各位有什么看法?难道就只能全表扫锚?
问题点数:50、回复次数:5Top
1 楼xhwly(wly)回复于 2005-05-18 07:50:42 得分 0
自已頂一下!
Top
2 楼zjcxc(邹建)回复于 2005-05-18 08:04:12 得分 30
inserted 和 deleted 是逻辑表(虚拟表),触发时自动生成,自然无法利用索引之类.Top
3 楼xhwly(wly)回复于 2005-05-18 08:17:52 得分 0
如果沒有那一欄的值則顯示空 , 則為
create table #(name varchar(100),subject varchar(10) , score int)
insert # values('張三','english' , 60)
insert # values('李四','chinese' , 80)
insert # values('張三','chinese' , 90)
insert # values('李四','english' , 100)
insert # values('王五','english' , 98)
insert # values('肖六','chinese' , 80)
insert # values('王五','chinese' , 75)
select * from #
declare @sql varchar(8000)
set @sql = 'select subject , '
select @sql = @sql + ' nullif(sum(case name when '''+name+'''
then score else 0 end) , 0) '+name +','
from (select distinct name from #) as a
select @sql = left(@sql,len(@sql)-1) + ' from # group by subject'
print @sql
exec (@sql)
drop table #
Top
4 楼rfq(任凤泉)回复于 2005-05-18 08:29:36 得分 5
学习!Top
5 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-05-18 08:35:30 得分 15
不可以。
inserted deleted是不可以改變的。
要是想改變就要自已創建別一個虛擬表。
他是sql自動生成。Top




