出现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 …
不知是否可有优化处理,这样的查询结果太慢了!

解决方案 »

  1.   

    出现13个表left join 是表设计问题么?-->
    如果业务逻辑
    非常麻烦的话
    是没有什么问题的
      

  2.   

    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语句就不能在怎么优化了
      

  3.   

    先看看执行计划 ctrl + L,排除table scan的,给相关字段加上index
      

  4.   


    如果其他表也有这样的话
    拿你就先对B表进行处理
    把B表处理成视图的形式
    然后在与A表进行连接查询
    这样会好点
      

  5.   

    看下查询计划
    将所有的table scan(也就是表扫描)
    改为index scan(索引扫描)
    这样有可以加快
    效率
      

  6.   

    查 执行计划 无  table scan
    哈希匹配 开销 较大
      

  7.   

    ctr+L 表扫描改为索引了,这样可以提高效率。
      

  8.   

    尽量控制表的顺序,还有别忘了给表加上 nolock 和别名。随着数据的增加,效率越来越慢是应该的。