CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

触发器中可不可以为inserted表 和 deleted 表建立索引 ?

楼主xhwly(wly)2005-05-17 14:57:17 在 MS-SQL Server / 基础类 提问

在触发器中,   发现对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

相关问题

  • 在触发器里可不可以捕捉修改表的用户
  • 触发器inserted表的问题
  • 触发器中Inserted表的行数?
  • oracle问题,可不可以建立这样的触发器?
  • 触发器的原代码可不可以看?怎么看?
  • 可不可以写在Insert前发生的触发器
  • 表层触发器
  • 表的触发器
  • 不知道触发器可不可以实现这样的功能?
  • 触发器,可不可以在10秒后执行,或者延迟十秒?

关键词

  • sql
  • 触发器
  • 索引
  • 表
  • inserted
  • chinese
  • deleted
  • english
  • subject
  • varchar

得分解答快速导航

  • 帖主:xhwly
  • zjcxc
  • rfq
  • Hopewell_Go

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo