13个表left join ?

fjicefire 2010-09-26 03:49:50
出现13个表left join 是表设计问题么?
为了逻辑上的正确 设计了A 表
查询结果缺是 A表 join B C D E F G H I J K L M N O表
B-O表均为字典表
结果 查询就变成一长串
select A.*,B.Name,C.Name,D.Name,E.Name,F.Name… from A left join B on A.b_id=B.id left join …
不知是否可有优化处理,这样的查询结果太慢了!
...全文
93 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
SongWangchu 2010-09-26
  • 打赏
  • 举报
回复
尽量控制表的顺序,还有别忘了给表加上 nolock 和别名。随着数据的增加,效率越来越慢是应该的。
「已注销」 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fjicefire 的回复:]

引用 2 楼 ws_hgo 的回复:
SQL code
select A.*,B.Name,C.Name,D.Name,E.Name,F.Name… from A left join B on A.b_id=B.id left join …

--》
这种情况的话
sql语句就不能在怎么优化了

如果 B表只需要其中一部分的 资料呢
[/Quote]
可以用视图来处理
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dawugui 的回复:]

13个表的查询?我的乖乖,你太有才了。帮顶。
[/Quote]
老D
你好肉麻啊
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fjicefire 的回复:]

查 执行计划 无 table scan
哈希匹配 开销 较大
[/Quote]
看4楼的
dawugui 2010-09-26
  • 打赏
  • 举报
回复
13个表的查询?我的乖乖,你太有才了。帮顶。
fjicefire 2010-09-26
  • 打赏
  • 举报
回复
查 执行计划 无 table scan
哈希匹配 开销 较大
Rotel-刘志东 2010-09-26
  • 打赏
  • 举报
回复
ctr+L 表扫描改为索引了,这样可以提高效率。
王向飞 2010-09-26
  • 打赏
  • 举报
回复
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
看下查询计划
将所有的table scan(也就是表扫描)
改为index scan(索引扫描)
这样有可以加快
效率
bancxc 2010-09-26
  • 打赏
  • 举报
回复
看需求.
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fjicefire 的回复:]

引用 2 楼 ws_hgo 的回复:
SQL code
select A.*,B.Name,C.Name,D.Name,E.Name,F.Name… from A left join B on A.b_id=B.id left join …

--》
这种情况的话
sql语句就不能在怎么优化了

如果 B表只需要其中一部分的 资料呢
[/Quote]

如果其他表也有这样的话
拿你就先对B表进行处理
把B表处理成视图的形式
然后在与A表进行连接查询
这样会好点
「已注销」 2010-09-26
  • 打赏
  • 举报
回复
先看看执行计划 ctrl + L,排除table scan的,给相关字段加上index
fjicefire 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ws_hgo 的回复:]
SQL code
select A.*,B.Name,C.Name,D.Name,E.Name,F.Name… from A left join B on A.b_id=B.id left join …

--》
这种情况的话
sql语句就不能在怎么优化了
[/Quote]
如果 B表只需要其中一部分的 资料呢
「已注销」 2010-09-26
  • 打赏
  • 举报
回复
估计设计不太合理
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
select A.*,B.Name,C.Name,D.Name,E.Name,F.Name… from A left join B on A.b_id=B.id left join …

--》
这种情况的话
sql语句就不能在怎么优化了
ws_hgo 2010-09-26
  • 打赏
  • 举报
回复
出现13个表left join 是表设计问题么?-->
如果业务逻辑
非常麻烦的话
是没有什么问题的

22,210

社区成员

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

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