给每个表的关联字段加索引,如b AS b ON a.PInstID = b.ID LEFT OUTER JOIN 
给a表的pinstid和b表的id字段加索引。

解决方案 »

  1.   


    SELECT    
    a.sex,
    b.age,
    c.name,
    d.state,
    e.type,
    f.head 
    FROM a 
    LEFT OUTER JOIN b ON a.PInstID = b.ID
    LEFT OUTER JOIN c ON c.ID = b.PrID 
    LEFT OUTER JOIN d ON d.ID = c.PSetID 
    LEFT OUTER JOIN e ON a.PInstID = e.PInstID AND 
    a.HeaderID = e.ID 
    LEFT OUTER JOIN f ON e.efctID = f.ID 
    WHERE (a.Status IN (0, 1)) 
    1)别名在这里没必要,因为和表名相同
    2)各连接ID建立索引
    3)定期rebuild索引,减少碎片
      

  2.   

    a.Status因为在where语句里,可以建立索引,能加快查询速度。
    如果这个语句是经常查询的话,建议在a.Status上建立聚集索引,因为条件只有这一个。
      

  3.   

    你以前的速度是多少?如果数据量小本来就快的话那也看不出来结果。
    查下你这个sql的执行计划情况
      

  4.   

    LEFT OUTER JOIN是否也影响性能呢?
      

  5.   

    各连接ID建立索引 
    a.Status上建立聚集索引