数据库设计问题,是多表UNION ALL排序还是全部放在一个表,效率区别大吗

sj6071 2017-05-26 01:13:14
各种原因,一个系统 本来 消费记录、充值记录、赔付记录等顾客资金相关的记录 分别用不同的表 存放,其中各个表有一部分字段含义和数据类型是一致的 ,还有一部分按不同的业务有其特殊的字段记录相关数据。

现在客户要求查询每个消费者的账户资金流水情况(按操作时间),现在有两种方案:
1.使用union all

with t as(
select dingdanid,xianjin,weixin ,shijian from 表A where 条件
union all
select dingdanid,xianjin,weixin,shijian from 表B where 条件
)
select top 10 * from t order by shijian;

2.新建一张表 ,重写代码 把相关操作记录全部放在一张新表中 ,并考虑原来各表 不同字段(即把不同字段 全部加到新表中),某些业务用不到的字段 空那里 保证各表最大化记录数据。

其中 需要按条件 查询,并按时间等字段进行排序查询显示出来 记录显示 还要分页到客户端显示
请问 这两种方式效率相差大吗?
...全文
702 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2017-05-26
  • 打赏
  • 举报
回复
不知“索引视图”适不适合,有没有效果。
中国风 2017-05-26
  • 打赏
  • 举报
回复
流水账新建一张表,用一个业务类型去区分是消费记录/充值记录/赔付记录 业务分别有各自的表去记录不影响
二月十六 2017-05-26
  • 打赏
  • 举报
回复
引用 2 楼 sj6071 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:] 可以新建一张表,就是用来记录dingdanid,xianjin,weixin,shijian这几个字段的,然后在给表A表B加触发器,在插入数据的时候,给这个新建的表同样插入数据。以前的代码也不用改
主要问问 这样用UNION ALL++排序+分页 查询的效率问题 ,效率可以的话 我就不改了 [/quote] 应该还可以,但是肯定不如新建一张表效率高
sj6071 2017-05-26
  • 打赏
  • 举报
回复

这个是 执行计划
sj6071 2017-05-26
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
可以新建一张表,就是用来记录dingdanid,xianjin,weixin,shijian这几个字段的,然后在给表A表B加触发器,在插入数据的时候,给这个新建的表同样插入数据。以前的代码也不用改
主要问问 这样用UNION ALL++排序+分页 查询的效率问题 ,效率可以的话 我就不改了
二月十六 2017-05-26
  • 打赏
  • 举报
回复
可以新建一张表,就是用来记录dingdanid,xianjin,weixin,shijian这几个字段的,然后在给表A表B加触发器,在插入数据的时候,给这个新建的表同样插入数据。以前的代码也不用改

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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