Date: Mon, 4 Feb 2002 15:32:20 +0900
From: "川瀬" <who@example.co.jp>
川瀬と申します。SQL文になりますが、よろしくお願いいたします。
お客様の最後に来店した日と、そのときの担当を出力するSQLを作成しています。
出力範囲は、「客CD」か、「担当CD」で、これは選択できます。
それを以下のように書きました。
**履歴Vというのはお客様の来店履歴のファイルから、
最終来店の情報のみを抽出してくるビューです。
SELECT 客F.客CD,客F.名前,履歴V.最終日付,履歴V.伝票担当CD
FROM 客F
LEFT OUTER JOIN 残高V ON 客F.客CD =履歴V.客CD
ここで、最後にWhere句とOrderBy句をつけて完成なのですが、
「WHERE 客CD >= 1 and 客CD<=99999」と書く場合と
「WHERE 伝票担当CD >= 1 and 伝票担当CD<=99999」と書いた場合とで
あきらかな処理時間の差が生まれてしまいました。
(客Fが5万件という環境で実行すると、
客範囲指定の場合は5秒ほど、担当範囲指定の場合は1分以上)
クエリアナライザでSQL実行プランをみてみると、最後に担当のWhere句を入
れると
大きく変わってしまっているのがわかりましたが、
どうしてこんなに変わってしまうのかがよくわかりません。
ご助言おねがいいたします。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|