
Sqlserver2005でスクリプトを実行しているのですが、
Select *
From ( Select文A ) TBL
( データ6万件 ) TBL2
Where TBL.Key *= TBL2.Key
を実行したとき、
Select文A … (1) 1000件数で実行したときと
(2) 1005件数で実行したときと
では20秒(1)が遅いのです。
(2)は1秒もかかりません。件数結果が少ないにも関わらず
時間が遅いことはあるのでしょうか??
どちらも遅いということだとわかるんですが…
実行プランをみたのですが、なにがよいのか判断できませんでした。
しかし、早く返ってくる方はハッシュ結合でした…
Where句で日付の範囲を変えるだけでハッシュ結合になる場合とならない場合があるのも疑問でした…
ご存知の方ご教授お願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
一般論として、クエリを分析、実行するオプティマイザはクエリそのものの違い、データ件数の違いだけではなく、
インデックス情報や収集した統計情報も使って最適な実行プランを作成しようとします。
http://technet.microsoft.com/ja-jp/library/cc966 …
また、実行プランはキャッシュされますので、その差が影響する場合もあります。
その意味では、データ量が少し違うだけで別のプランが有利だと「判断する」可能性は当然ながらあります。
(オプティマイザが選択したプランが常に最適というわけではありません)
HashJoinとNested-Loopが本当に唯一の違いなのであれば、質問者さんのこのクエリの実行環境においては、1000件が結合方法を切り替えるボーダーになっている可能性はありますが、それだけが理由なのか、当然ながら開示された情報では圧倒的に情報が不足していますのでコメントすることはできません。
前述の通り、実行プランの選択には多くの要素があることを認識いただくべきだと思います。
回答の程ありがとうございます。
現在HashJoinを考えておりました。
しかし データ6万件 のSQL文の条件がしぼれそうなので
もう少ししぼって外部結合を行ってみます。
今まで、条件(月単位毎に集計を行う為、年月が範囲になります。)が異なってもこのように数十秒もかかることはなかったので悩んでます。
深く調べてみます。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- PHP PHPSpreadsheetを使って関数を繰り返し埋め込みたい 1 2023/05/24 11:33
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel-VBAの「しばらくお待ちく...
-
phpmyadminでの表示速度が遅い
-
年に一度の実行(DBMS_JOB)
-
SQL Server2008リプリケーショ...
-
WHERE句の?
-
C# 2005で DataGridiew上にPost...
-
副問い合わせクエリ
-
ACCESSでのUPDATEコマンド
-
ストアドプロシージャはアトミ...
-
インデックスの断片化が解消さ...
-
SQL SERVER2005の不具合情報
-
SQL-Loaderが動かないです。
-
コマンド内容
-
ACCESSのツールバー「フォーム...
-
アクションクエリが実行できない
-
【Oracle】ADOでSELECT * FROM ...
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
ノートンの解約(「ライセンス...
-
postgreSQLのエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel-VBAの「しばらくお待ちく...
-
SQLCMDにて教えていただきたい...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
バッチでのSQL実行結果の分岐処...
-
ストアドの速度がクエリの30...
-
SQLServerのジョブからバッチを...
-
SQLServer2005のストプロでxp_c...
-
100万件レコードdelete
-
Excelフィルタ抽出で「検索して...
-
同じSQL文で速度がだいぶ違う
-
SQLサーバーのジョブでのexeフ...
-
ユーザー定義関数内でのsp_exec...
-
SQL-Loaderが動かないです。
-
sqlcmdでクエリの実行結果をバ...
-
データベース SQL のセッショ...
-
バッチからメンテナンスプラン...
-
アクションクエリが実行できない
-
オラクルインストールユーザ以...
-
xp_cmdshellについて
-
【Oracle】ADOでSELECT * FROM ...
おすすめ情報