sql serverテーブルエイリアスパフォーマンス低テンポラリテーブルパフォーマンス高
1521 ワード
次の例を示します.
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を加えると、パフォーマンスが大幅に向上します.
書き方は以下の通りです.
テンポラリ・テーブルは後で削除するため、次のようにプロシージャ全体を1つのストレージ・プロシージャに格納できることを考慮します.
REF URL: http://www.ej38.com/showinfo/sqlserver-141034.html
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