请教UNION ALL的性能问题

siaosa 2009-08-05 04:57:13
有一这样的视图
select f1,f2,f3,f4,f5 from tab1
union all
select f1,f2,tab2f3 as f3,tab2f4 as f4,tab2f5 as f5 from tab2
union all
select f1,f2,tab3f3 as f3,tab3f4 as f4,tab3f5 as f5 from tab3
union all
select f1,f2,tab4f3 as f3,tab4f4 as f4,tab4f5 as f5 from tab4
union all
select f1,f2,tab5f3 as f3,tab5f4 as f4,tab5f5 as f5 from tab5
where f1='XXXXXX' and f2='xxxxxxxx'

表tab1,2,3,4,5的表结构是不一样的,如果表tab1,2,3,4,5里的数据有每张表有几十万笔数据,查询起来会不会很慢啊?有没有什么优化的办法?

...全文
1197 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsie168518 2010-05-10
  • 打赏
  • 举报
回复
学习,关注
lkscjwddsg 2010-05-10
  • 打赏
  • 举报
回复
UNION ALL

SELECT TD1.ItmID,
-TD1.Qty, -TD1.BaseQty, -TD1.OpenCreQty, -TD1.OpenQty,
-TD1.LineSumFC, -TD1.LineSum, -TD1.TaxSumFC, -TD1.TaxSum
这是我UNION ALL之后都语句,能告诉我后面都-是什么意思吗?
  • 打赏
  • 举报
回复
索引视图,是解决此类问题的最佳实践.
cyshenfh 2009-08-06
  • 打赏
  • 举报
回复
加索引
linguojin11 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tushadongjing 的回复:]
请教下
/**
1,创建视图
2,视图上建立索引
**/
在SQL 2000中是否可以做到
[/Quote]
可以的
tushadongjing 2009-08-05
  • 打赏
  • 举报
回复
请教下
/**
1,创建视图
2,视图上建立索引
**/
在SQL 2000中是否可以做到
fwacky 2009-08-05
  • 打赏
  • 举报
回复

/**
1,创建视图
2,视图上建立索引
**/
realgoking 2009-08-05
  • 打赏
  • 举报
回复
mark
bluefangxiao 2009-08-05
  • 打赏
  • 举报
回复
索引视图
siaosa 2009-08-05
  • 打赏
  • 举报
回复
To:acupofnescafe
我都已经是用UNION ALL了,我不需要过滤掉相同的

有谁实验过的,有经验的请告诉我一下,我上边的做法行不行,有什么可以优化的地方
ai_li7758521 2009-08-05
  • 打赏
  • 举报
回复
对视图创建唯一聚集索引后,结果集将存储在数据库中,就像带有聚集索引的表一样。 数据不会随基表变化而及时变化。一般的提高视图性能是通过对原表加索引实现的。
soft_wsx 2009-08-05
  • 打赏
  • 举报
回复
用UNION ALL 的方法建立视图,然后在视图上建立索引
feixianxxx 2009-08-05
  • 打赏
  • 举报
回复
用UNION-ALL 替换UNION ( 如果有可能的话):
当SQL 语句需要UNION 两个查询结果集合时,这两个结果集合会以UNION-ALL 的方式被合
并, 然后在输出最终结果前进行排序. 如果用UNION ALL 替代UNION, 这样排序就不是必要
了. 效率就会因此得到提高. 需要注意的是,UNION ALL 将重复输出两个结果集合中相同记
录. 因此各位还是要从业务需求分析使用UNION ALL 的可行性. UNION 将对结果集合排序,
这个操作会使用到SORT_AREA_SIZE 这块内存. 对于这块内存的优化也是相当重要的. 下面
的SQL 可以用来查询排序的消耗量
ks_reny 2009-08-05
  • 打赏
  • 举报
回复

union= distinct union all
htl258_Tony 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acupofnescafe 的回复:]
union all 这个操作只是单纯的把两个结构相等的结果集合并到一起,效率比较高。但是不执行相同纪录检查。如果用union这个操作,就会对两个结果集进行合并,同时检查是否有重复纪录,如果有重复,那么只保留一条。所以union比union all效率低。
希望我的解释,能给楼主带来点思路。

[/Quote]
赞同
幸运的意外 2009-08-05
  • 打赏
  • 举报
回复
union all 这个操作只是单纯的把两个结构相等的结果集合并到一起,效率比较高。但是不执行相同纪录检查。如果用union这个操作,就会对两个结果集进行合并,同时检查是否有重复纪录,如果有重复,那么只保留一条。所以union比union all效率低。
希望我的解释,能给楼主带来点思路。
feixianxxx 2009-08-05
  • 打赏
  • 举报
回复
方法 就是在试图上加索引
SQL77 2009-08-05
  • 打赏
  • 举报
回复
做成视图!!
应该不会很慢吧,建立索引

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧