•数据库:MSSQL Server2005
 
表的情况:
 
1.表A 有8个列a1(主键),a2,a3,...,a8
 
表B有65个列b1(主键),b2,b3,...,b65
 
2.表A数据大概每分钟增加6条
 
表B数据大概每一小时增加1条
 
查询语句:
 
select a1,a2,a3,a4,a5,a6,b2 from A inner join B on a3=b1 where a7=0
 
问题:
 
检测到查询耗时2分40秒,怎么来优化?

解决方案 »

  1.   


    --数据小的表放前面
    select a1,a2,a3,a4,a5,a6,b2 from B inner join A on a3=b1 where a7=0
      

  2.   

    JOIN的时候指定 Merge Join试试。
      

  3.   

    两个表连接后的结果集有多少行?程序是否需要数据库返回这么多行?不需要可以考虑分页。如果程序就是需要返回全部结果集那么优化效果不大,要是inner出来10w行,大量时间会花费在磁盘IO上的。