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

Union 后执行速度变慢!

楼主robertzy()2005-04-21 14:51:26 在 MS-SQL Server / 应用实例 提问

我有一个SQL语句,结构是这样的  
  select   field1,   field2,field3  
  from   view1  
  where   field4   =   @parameter  
  union  
  select   field1,   field2,field3  
  from   view2  
  where   field4   =   @parameter  
  以前执行一直都没有问题,速度很快,1-2秒,但昨天开始突然变慢,要执行13秒,我查了一下,第一,第二部分执行都只要1秒,但union后却要13秒。我想不出有什么理由,也不知道怎么去改。 问题点数:50、回复次数:19Top

1 楼zjcxc(邹建)回复于 2005-04-21 14:52:47 得分 0

1.重建view  
   
  2.将union   改为   union   all,看看速度Top

2 楼robertzy()回复于 2005-04-21 15:01:09 得分 0

1怎么叫重建view,   我没改view.  
   
  2.union   all   一样  
   
  多谢,还有什么原因,我实在想不通,什么也没变,突然就慢下来了。  
  Top

3 楼zjcxc(邹建)回复于 2005-04-21 15:07:43 得分 10

view1  
  这个是视图还是表,如果说视图,则要重建,如果是表,则用dbcc   checktable('view1')松果Top

4 楼zjcxc(邹建)回复于 2005-04-21 15:08:22 得分 0

松果   -->   检查Top

5 楼robertzy()回复于 2005-04-21 15:39:57 得分 0

view1,   view2   都是视图。   重建会有什么不同?Top

6 楼robertzy()回复于 2005-04-21 15:48:34 得分 0

view1,   view2   都有3层,其中也有union。但我想知道到底什么原因诱发了这样的改变,如果不知道原因,那以后就不能避免这样的事情发生,总要等到发生后再找原因,这样就耽误时间了。我看了一下执行计划,好像都用到了该用的索引,没什么问题,就这最后一步出了问题。Top

7 楼devclub(OSen)回复于 2005-04-22 09:03:18 得分 10

你建立一个view就可以了,也可以是一个SP,虽然Microsoft语法上是存在Union,但是它要求两个表的列数要相同,同时列的类型也要一致,这样就需要扫描,速度你说会快嘛?  
  还有你说执行一条本来只是需要1S,其实数据量不是很大的话,1S已经可以致命了,说明你得语句肯定是效率不高,所以我建议你建立好index,以便加速查询速度.Top

8 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-04-22 13:48:49 得分 10

將union改為union   all看一下怎么樣Top

9 楼aspcom(牧野流星)回复于 2005-04-25 15:09:13 得分 10

1-2秒速度也算很快?楼主确信索引都建好了吗?  
  最好不要用union,看看表结构的设计,有没有可以修改的地方Top

10 楼robertzy()回复于 2005-04-25 16:08:04 得分 0

1-2秒是不好,但我现在不是这个问题,我可以以后再改,但现在是union后有问题,1+1   =13。我想搞明白我忽略了什么,  
  索引该建得我都建了,我的数据源有>5millions的数据,所以不是索引的问题,否则没法查询。  
   
  同意  
  “但是它要求两个表的列数要相同,同时列的类型也要一致,这样就需要扫描,速度你说会快嘛?”  
  忘说了,我的结果集倒不大,第一,第二部分只返回1-2条结果,所以总共只有2-3条返回。我想union扫描也不应该花太多时间。  
   
  其实我的问题是:  
  为什么原来执行正常的视图突然会变慢?  
  Top

11 楼robertzy()回复于 2005-04-25 16:13:45 得分 0

“其实我的问题是:  
  为什么原来执行正常的视图突然会变慢?“  
   
  这个好像不准确,我也搞不情到底哪是问题。Top

12 楼chenqianlong(443)回复于 2005-04-27 08:49:33 得分 10

樓主,我幫你頂,找到原因帖出來啊.Top

13 楼yeshu(夜鼠)回复于 2005-04-27 13:06:48 得分 0

我建议你重新考虑建立   聚合索引  
  Top

14 楼robertzy()回复于 2005-04-27 14:08:43 得分 0

建聚合索引也不行Top

15 楼chichunhua(無愧與心)回复于 2005-04-28 14:04:03 得分 0

用exist試試Top

16 楼robertzy()回复于 2005-04-28 15:15:52 得分 0

怎么用exist试Top

17 楼whb963(ddd)回复于 2005-04-28 15:30:08 得分 0

用DBCC   INDEXDEFRAG   和   DBCC   REINDEX     查一下索引   ,  
  Top

18 楼windermar(若风)回复于 2005-05-11 18:22:58 得分 0

还有一个可能的原因,那就是内存不够了。再加一倍内存试一下。Top

19 楼devclub(OSen)回复于 2005-07-14 11:04:26 得分 0

用临时表看看把Top

相关问题

  • 欢迎讨论,关于VBA到VB时程序执行速度变慢的原因和解决方法!
  • 装了windows98 se后速度变慢了
  • 机子速度为什么会变慢
  • 上网20分钟后速度变慢怎么回事
  • 为什么我的机子速度变慢了
  • 软件运行速度逐步变慢是什么原因
  • 求救,我的telnet速度怎么变慢了?
  • 系统速度变慢有什么问题???
  • 奇怪!装win2000后,上网的速度变慢了???
  • informix数据库速度变慢的问题

关键词

  • 视图
  • 执行
  • view
  • 数据
  • 变慢
  • union
  • 速度
  • 索引
  • 重建
  • 扫描

得分解答快速导航

  • 帖主:robertzy
  • zjcxc
  • devclub
  • Hopewell_Go
  • aspcom
  • chenqianlong

相关链接

  • SQL Server类图书

广告也精彩

反馈

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