SQL Server 2008把10张结构完全一样的表合并成一张大表然后进行查询,如何提高效率
答案:2 悬赏:10 手机版
解决时间 2021-04-02 15:05
- 提问者网友:温旧梦泪无声
- 2021-04-01 23:51
SQL Server 2008把10张结构完全一样的表合并成一张大表然后进行查询,如何提高效率
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-04-02 01:15
从你举得例子里有个问题并没有明确
你说的合并是怎么合并,是横向合并还是纵向合并
纵向 select * from a union all select * from b
横向 select * from a, b, c ... where a.xxx = b.xxx and b.xxx = c.xxx .....
那你写了有a.*** = b.*** 这样的查询,那就认为你是横向合并。
横向合并的话,表结构是否完全一致跟效率问题并没有一点点的关系。
通常的做法是在各个表的关联字段上创建聚集索引,提高表关联查询的速度
另外你每次查询肯定不可能要查询所有的记录,在对应的查询条件上创建合适的索引
此外如果你这些表的数据并不是频繁更新的话,可以用索引视图。
除了以上办法,并没有更好的处理方式了。
你说的合并是怎么合并,是横向合并还是纵向合并
纵向 select * from a union all select * from b
横向 select * from a, b, c ... where a.xxx = b.xxx and b.xxx = c.xxx .....
那你写了有a.*** = b.*** 这样的查询,那就认为你是横向合并。
横向合并的话,表结构是否完全一致跟效率问题并没有一点点的关系。
通常的做法是在各个表的关联字段上创建聚集索引,提高表关联查询的速度
另外你每次查询肯定不可能要查询所有的记录,在对应的查询条件上创建合适的索引
此外如果你这些表的数据并不是频繁更新的话,可以用索引视图。
除了以上办法,并没有更好的处理方式了。
全部回答
- 1楼网友:纵马山川剑自提
- 2021-04-02 02:48
这种情况必须得用UNIOn ALL 比如:
SELECt 字段1,字段2 from 表1
WHERe 条件
UNIOn ALL
SELECt 字段1,字段2 from 表2
WHERe 条件
........
UNIOn ALL
SELECt 字段1,字段2 from 表10
WHERe 条件
需要注意的是:字段1 ,字段2 名字必须一致 位置必须对应
SELECt 字段1,字段2 from 表1
WHERe 条件
UNIOn ALL
SELECt 字段1,字段2 from 表2
WHERe 条件
........
UNIOn ALL
SELECt 字段1,字段2 from 表10
WHERe 条件
需要注意的是:字段1 ,字段2 名字必须一致 位置必须对应
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯