sql serverテーブルエイリアスパフォーマンス低テンポラリテーブルパフォーマンス高

1521 ワード

次の例を示します.
 
   select * from 
( select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx)
as a  where a.xx=xx
 
aは複雑なものなので、肝心なaは別名で出てきます.
その書き方は非常に時間がかかります.
 
ただし、select*from b left join c on xx=xx left join d on xx=xx left join e on xx=xxを一時テーブルに入れ、一時テーブルからwhere a.xx=xxを加えると、パフォーマンスが大幅に向上します.
書き方は以下の通りです.
select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx into #tmpTable
 
テンポラリ・テーブルは後で削除するため、次のようにプロシージャ全体を1つのストレージ・プロシージャに格納できることを考慮します.
 
                 ,               ,                  ,      ,       ,         。   sql          ,                  ,   sql   
         sql  :
select top 100 * from 
view_customerPayDetails where 
( 1=1) and (payId not in
(select top 100 payId from 
view_customerPayDetails where 
( 1=1) order by payId desc))order by payId desc
          sql  :
select top 100 payId into #tmpTable 
from view_customerPayDetails
order by payId desc
select top 100 * from view_customerPayDetails 
where  payId not in (select payId from #tmpTable ) 
order by payId desc
drop table #tmpTable ......
 
 
 
REF URL: http://www.ej38.com/showinfo/sqlserver-141034.html