問題タブ [sql-tuning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2235 参照

performance - サブクエリによって返されたスカラー値を使用しているときに、DB2 でインデックスの使用を強制する方法は?

クエリは巨大なテーブルで実行されます (10 億レコード以上)

identcol > (ParamTable から bigint(identval) を選択) である TableA から Col1 を選択します。

( identvaldatatype is character and identcolis BIGINT) これには長い時間がかかり、完全なテーブル スキャンが実行されます。サブクエリを置き換えて、identcol の where 句で数値を使用すると、その列のインデックスが使用され始めます。

リテラル値を指定せずに DB2 にこのインデックスを強制的に使用させる方法はありますか? (AIX 上の DB2 9.7 luw)

編集: BETWEEN がサブクエリと上限値で機能し、インデックスも使用していることがわかりました。また、BIGINT への明示的なキャストを削除すると、インデックスの使用が開始されます。しかし、それでも技術的な説明/ポインターを知りたいです。ありがとう!

0 投票する
2 に答える
1685 参照

oracle - DB リンクを介して Oracle DB に CLOB データ型を挿入する

SQL Server で varchar2(8000) のテキスト フィールドからデータを挿入しようとしています。同様の列を作成しましたが、Oracle db で clob データ型を使用しています。一貫性のないデータ型の問題を解決し、クエリのパフォーマンスを改善するのを手伝ってもらえますか? 複数の行に巨大なテキスト ファイルを挿入するための他の良い方法があれば教えてください。SQL Server と Oracle データベースで同じクエリを実行すると (つまり、TBL_NOTES@PPRLEG から "Note" を選択すると)、結果がすぐに取得されます。データを挿入しようとすると、時間がかかり、終了しません。ここでは、クロブを含む列のみを指定し、残りを処理する必要があります。

/

0 投票する
0 に答える
71 参照

sql - Teradata - クエリに含まれるオブジェクトの一覧表示

Teradata SQL クエリに関連するすべてのオブジェクト (テーブル ビュー SP のマクロ) を一覧表示できる SQL ステートメントはありますか? DDL を展開せずに show select * from に似ています。やりました。

0 投票する
0 に答える
412 参照

sum - Sum およびその他の集計関数を使用した Teradata SQL のチューニング

私は次のようなクエリを持っています

問題は、TB3 と TB4 が巨大なファクト テーブルであることです。ファクト テーブルの PI は、ここでの結合またはクエリには含まれません。

これまでに行ったこと

揮発性テーブル( IN LIST と同じ pi )を作成し、具体化しようとしました。VT1 には TB4 と同じ PI があり、where 句に IN LIST が含まれます。私はアプローチを使用してこれをLOJします

これらの種類のクエリを最適化する方法 tb3 と tb2 が巨大なファクト テーブルであるとします。PI TB3 は C4、c6 であり、tb2 の PI は C6、C7 です。TB3 にはパーティション列 Cp がありますが、どのような where 句にも使用されません。同じ PI を持たない結合の 1 つで使用されますが、PI の行数内で共通の列を持つ可能性があります。元のクエリは、スプールアウトしないと実行できません。幸いなことに、夜は 80K Impact C で実行できました。tb2 と同じ PI で VT2 を作成し、それを使用して参加した後、クエリを < 200 Impact でのみ実行できました。TD についてスクワットを知っている BO ユーザーが使用する VT の束を作成したくありません。この Q を改善するにはどうすればよいですか

0 投票する
0 に答える
1172 参照

sql - Teradata SQL: OR条件とUnion all

私の理解では、ほとんどの OR 条件は UNION ALL でパフォーマンスが向上する場合に置き換えることができます。しかし、これら 2 つのクエリでは、カウント ('1') は同じではありません。なぜそうですか-ここで何かが足りないのですか。それは同じではないはずです。誰かが格差を説明できますか

SQL # 1

SQL#2

行数が同じではありません。同等の UNION ALL として変換できる OR ロジックの種類。

0 投票する
2 に答える
313 参照

mysql - MySQL SELECT ステートメントで OR 句を使用することは一般的に悪い考えですか?

先日、クエリで問題が発生しました。大きなデータセットの場合、約 10 秒かかりました。クエリは次のようになります。

これはかなり遅くなりました。ただし、次のように変更しました。

2 つのクエリは基本的に同じ結果を生成しますが、これには約 0.01 秒かかりました。MySQL の公式ドキュメントを探したところ、興味深いコメントが見つかりまし

インデックスは、OR 状況で使用すると速度の利点を失います (4.1.10):

SELECT * FROM a WHERE index1 = 'foo' UNION SELECT * FROM a WHERE index2 = 'baar';

よりもはるかに高速です

SELECT * FROM a WHERE index1 = 'foo' OR index2 = 'bar';

だから、私の質問には3つの部分があります:

  • 本番システム (つまり、データセットが非常に大きい場合) で選択クエリで OR 句を使用するのは本当に悪いことですか?
  • この OR クエリは、何らかの方法でインデックスによって調整できますか? 現在、フィルター処理に使用するクエリの両方の列が実際にインデックス化されています。OR を UNION ALL と同じくらい高速に動作させるために、複雑な複合インデックスを作成できますか?
  • これはベンダー固有の問題ですか、それとも Oracle や Postgresql でも同じ問題が発生するのでしょうか?
0 投票する
2 に答える
76 参照

performance - 単純な条件でクエリ オプティマイザーとそのパフォーマンスを分析する

簡単なクエリがあります:

このクエリは通常 0.5 秒間実行されます。 実行計画 1

しかし、コメントされていない条件を持つ同じクエリが 5 秒間実行され (!!!)、非常に奇妙な実行計画があります (リンクされた列がなく、最も選択的な条件 "r2l.[ChecksumWasSent] = 0 AND r2l があるにもかかわらず、リビジョンと SqlServers が結合されます.Status = 2" は、クエリ処理の最後に実行されます。 実行計画 2

ValidationStatus は通常の int 非 null 列です。列 Revision2UploadLocations.RevisionId、Revisions.DatabaseId、Databases.InstanceId にインデックスが付けられます。テーブルの説明は次のとおりです。

このクエリのパフォーマンスを改善するにはどうすればよいですか?

EDIT今、いくつかの詳細があります: 一部のテーブル (SqlServers および Databases) には 1 ~ 10 のレコードがありますが、Revisions および Revision2UploadLocations) には 500K+ のレコードがあるため、クエリの最適化では、小さなテーブルのインデックス検索の代わりにフル スキャンを使用することを決定し、最初に取得します。 クエリ パフォーマンス チューニング (SQL Server Compact) :

小さなテーブルとは、コンテンツが 1 つまたは数ページのデータ ページに収まるテーブルです。通常、テーブル スキャンを実行する方が効率的であるため、非常に小さなテーブルのインデックス作成は避けてください。

一時的な解決策として、クエリ ヒントFORCE ORDER : Query Hint (SQL Server Compact)を使用しようとしまし たが、応答時間が 5 秒から 0.5 秒に短縮されました。

しかし、私はそれが良い解決策だとは思いません。

0 投票する
3 に答える
3022 参照

sql - Teradata SQL チューニング専門家 - SELECT が失敗しました。3771 : CASE 式の WHEN 句に不正な式があります

以下のステートメントを使用していますが、このエラーが発生します。

選択に失敗しました。3771:CASE式のWHEN句の式が不正です。

Teradata にはもっと期待していました。SQL Server ではできますが、Teradata ではできません。これを回避するにはどうすればよいですか? 解決策はありますか?

0 投票する
0 に答える
1209 参照

sql - Teradata SQL の最適化: NOT IN (List)、Col <>、および IN LIST の最適化

これらの状況がたくさんあるクエリがあります

フィルター条件を書き換えるより良い方法はありますか

一部の列は選択されていますが、一部は選択されていません。セル Vs フィルター条件にあります。