优化数据库性能,数据表分表之后的查询统计问题?

fali9999 2006-06-22 03:43:55
为避免数据表承载几百万甚至上千万的数据记录,需要对表进行分表,比如对某张表分成了16张(结构都是一致的)。但分表之后想对这些表执行条件查询或统计操作,甚至关联其他表进行复杂查询,该如何操作呢?
是对每个表写SQL语句然后Union起来还是建个索引视图?如果建立视图性能上有提高吗?否则何必要分表呢?
...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fali9999 2006-06-22
  • 打赏
  • 举报
回复
只要有UNION就不能建索引,提示:
无法对视图 ... 创建 索引,因为其中包含一个或多个 UNION、INTERSECT 或 EXCEPT 运算符。如果将查询作为原始视图的 UNION、INTERSECT 或 EXCEPT 运算符的输入,请考虑为每个这样的查询创建一个单独的索引视图。

"为每个这样的查询创建一个单独的索引视图"肯定是没有意义的。
zlp321002 2006-06-22
  • 打赏
  • 举报
回复
--可以建立索引,不过,这样使数据的更新和删除更慢!频繁做DML 操作,还可能产生数据库死锁!
iamltd 2006-06-22
  • 打赏
  • 举报
回复
用union all建立的视图应该是可以建立索引的吧?
select id, userid, description from table1
union all
select id, userid, description from table2
union all
select id, userid, description from table3
....
union all
select id, userid, description from table16
suntt 2006-06-22
  • 打赏
  • 举报
回复
那也要看你的硬盘子系统是怎么规划的了
fali9999 2006-06-22
  • 打赏
  • 举报
回复
现在的视图是:
select id, userid, description from table1
union
select id, userid, description from table2
union
select id, userid, description from table3
....
union
select id, userid, description from table16
这样的视图是不能建索引的。
所以怀疑起不到性能提升的作用,反倒跟单表操作没什么区别了。
点点星灯 2006-06-22
  • 打赏
  • 举报
回复
建立视图

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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