请问一个Select语句效率的问题

阿飞666888 2012-09-01 09:53:05
表CallOut里面有几十万条数据,以后肯定要几百万或是几千万条。这个表里存了GroupID,SeatID,TypeID,AdviserID。这些ID都是别的表的ID。在显示表CallOut的数据的时候,不能显示ID,需要把ID对应的名字显示出来。这样就得5个表联合查询。请问有没有更好的办法?如果直接存ID对应的Name,那万一Name改名了,就对应不上了。请问大家平时怎么处理这些的。
...全文
137 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
renolit 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
不好意思,不是太明白。什么是子查询?像这样的吗?
Select TypeID,TypeName=(Select TypeName From Type where CallOut.TypeID=Type.TypeID)....from CallOut
TypeName是子查询吗?这样的效率和级联查询哪个更快?
[/Quote]
对的,这就是子查询
子查询会比级联查询效率更快
以学习为目的 2012-09-01
  • 打赏
  • 举报
回复
先根据条件筛选CallOut表中符合条件的结果集,然后再把筛选出来的结果集和其他表进行关联,或者子查询,你的数据量也不是问题
流逝 2012-09-01
  • 打赏
  • 举报
回复
子查询比级联效率高些的
流逝 2012-09-01
  • 打赏
  • 举报
回复
子查询相对级联更快一些的
發糞塗牆 2012-09-01
  • 打赏
  • 举报
回复
这种类型的表大一点没关系的,由于是一对多,所以关联主表的时候其实数据量不会太大,我现在公司就有一个主表1000万,明细表(存放主表的ID及更详细的信息),有点类似楼主的情况。只要查询时把主表的数据量控制好,那么在关联明细的时候其实还是很快。当然如果业务上的确要那么大数据量,就要考虑改一下设计。

另外,可以考虑,按照查询条件,添加索引,甚至可以全表索引。
AcHerat 元老 2012-09-01
  • 打赏
  • 举报
回复
还是用ID来关联,查找具体的name就要几张表联合查询。
  • 打赏
  • 举报
回复
肯定还是得用联合查询。
试试 根据条件先将CallOut的记录查询出来,然后将结果再与其他四个表关联。
人生无悔 2012-09-01
  • 打赏
  • 举报
回复
改为子查询
阿飞666888 2012-09-01
  • 打赏
  • 举报
回复
不好意思,不是太明白。什么是子查询?像这样的吗?
Select TypeID,TypeName=(Select TypeName From Type where CallOut.TypeID=Type.TypeID)....from CallOut
TypeName是子查询吗?这样的效率和级联查询哪个更快?

34,588

社区成员

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

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