問題タブ [sqlperformance]

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 投票する
3 に答える
301 参照

sql - 単純な「または」で SQL コストが急増するのはなぜですか?

データ (~100 万エントリ) で明確な名前を見つけるために、次のステートメントがあります。

Oracle は 1477315000 という莫大なコストを示し、実行は 5 分後に終了しません。OR を独自の exists サブ句に分割するだけで、パフォーマンスが 0.5 秒に向上し、コストが 45000 に向上します。

これはめったに実行されないクエリであり、CONTACT がどのインデックスよりも優れていることは知っていますが、この高いコストがどこから来るのか疑問に思っています。どちらのクエリも意味的には同等のようです。

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

sql - 最適化された 1 つのクエリで、日、月、年、生涯の合計レコードを取得します

私は7.4を実行しているPostgres DBを持っています(ええ、私たちはアップグレードの真っ最中です)

日次、月次、年次、および生涯のレコード数を取得するための 4 つの個別のクエリがあります。

DAY月の場合は、クエリ内の単語をMONTH期間ごとに置き換えるだけです。

1 つのクエリで目的の結果をすべて取得する方法と、推奨される最適化についてのアイデアを探しています。

前もって感謝します!

注: date_field はタイムゾーンなしのタイムスタンプです

アップデート:

申し訳ありませんが、追加のクエリ制約を使用してレコードを除外しています。date_field 比較の要点を伝えたかっただけです。混乱を招いて申し訳ありません

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

mysql - データベース内の整数または長い文字列(一意)の検索に基づくパフォーマンス?

データベースのテーブルに5つの列があり、2つは一意です(1つは整数で、もう1つは文字列です)。

整数はのよう
1,5,6,7,9,0であり、文字列はのよう http://exmaple.com/Book-on-the-self-no-2です。

ここで、行の検索にどの列を使用する必要がありますか?パフォーマンスにどのように影響しますか?データベースはsqlまたはmysqlですか?

感謝..

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

sql - IN を使用した SELECT 句 ... 非常に遅いですか?

Oracle DB への次のクエリを確認して、何が問題なのかを指摘してください。

クエリ統計:

  • かかった時間: 10.53 秒。

指標:

  • t2.empnoインデックスされています。

  • t1.idインデックスされています。

  • t2.idインデックスされています。

アップデート


上記のクエリは、私が使用するクエリの単なるサンプル レプリカです。以下、より正確な形で

計画の説明 計画の説明

クエリ:

索引付けされた列:

テーブル


表 2


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

sql-server - SQL Serverは複雑なビューでWHERE条件を伝播しますか?

質問から何を意味するのかが明確でない場合に備えて、この質問の後に完全な例を示しました。

約5つのテーブルのデータを結合するビューを作成しました。テーブルには膨大な量のデータがあり、クエリの実行には時間がかかります。私の質問は、私がそうする場合:

SQL Serverは「私が何を意味するのかを知っており」、その条件をビューの基になる結合に自動的に伝播しますか?すべての人に実行されるわけではありませんが、適切な段階で結果セットを最小限に抑えるようにします。それとも、すべてに対して実行さWHERE ID = 1000れ、完全な結果セットに対して実行されますか?


私が言っていることを単純化するために(...うまくいけば)、これが疑似TSQLシナリオの例です:

Peopleだから私は私にすべて、Activities彼らが関わったもの ActivityType、そしてLocationそれが起こったことを示すビューが欲しいのです。この設定はそれほど複雑ではありませんが、各エンティティが数万と言われると、実行に非常に長い時間がかかる可能性があることがわかります。

ビューは次のようになります。

だから

ビュー内のクエリはすべてのユーザーに対して実行されますか、それともSQL ServerはそれをPeople.DOBフィールドに適用する必要があることを認識しますか?

0 投票する
5 に答える
151 参照

asp.net - 複数のラウンドトリップと一時テーブルの使用?

いくつかの列を含むレコードのリストを保存する必要があります。それには2つの方法があります。

  1. その要素のリストを作成し、コード内からストアド プロシージャを複数回実行するだけです。

    foreach(TestInfo test in lstTestInfo) {//ストアド プロシージャを実行}

  2. 文字列を作成してデータベースに送信し、そこで分割して一時テーブルに保存し、そこに 1 回の往復で挿入できます。

これは深刻な問題ではありませんが...いくつかの洞察が必要です。ありがとう!

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

sql-server - 例外をスローせずに効果的な方法で重複キー挿入を処理する方法

私のケースのシナリオは、挿入のみを行うプロシージャにパラメーターを渡します。ただし、2 つのスレッドが同じ値を渡そうとする場合があります。

例外をスローせずに、最小限のロックでこの状況を処理するにはどうすればよいですか?

私のパフォーマンス要件は、1 秒あたり少なくとも 10,000 回の挿入です。

編集:列は一意です。タイムスタンプは、挿入前に変更 (調整) される場合があります。

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

sql - ユーザー定義関数とパフォーマンスを使用していますか?

ストアド プロシージャを使用してデータを取得していますが、動的にフィルター処理する必要がありました。たとえば、ID が 5、10、または 12 のデータを取得したくない場合は、文字列としてプロシージャに送信し、ユーザー定義関数を介してテーブルに変換します。ただし、パフォーマンスを考慮する必要があるため、例を次に示します。

解決策 1:

解決策 2:

パフォーマンスに優れたソリューションはどれですか?

0 投票する
5 に答える
480 参照

sql - SQL - 個別のレコードを効率的に選択する方法

非常にパフォーマンスに敏感な SQL Server DB を持っています。次の問題を効率的に選択する必要があります。

4つのフィールドを持つ単純なテーブルがあります:

各 UserID は、Active='false' の GroupID (および複数の groupID) で複数回表示できますが、Active='true' の場合は 1 回だけです。

そのような:

ユーザーの最後のアクティブな状態を保持する必要がある特定のグループのテーブルから、すべての個別のユーザーを選択する必要があります。ユーザーがアクティブな状態にある場合 - ユーザーの非アクティブな状態を返す必要はありません。

単純な解決策は二重選択です。1 つはすべてのアクティブなユーザーを選択し、もう 1 つは最初の select ステートメントに表示されないすべての非アクティブなユーザーを選択します (各ユーザーはある時点で非アクティブな状態になる可能性があるため)。 )。しかし、これは最初の選択 (アクティブなユーザーを含む) を 2 回実行することになり、これは非常に望ましくありません。

必要なクエリを取得するために 1 つだけを選択するスマートな方法はありますか? アイデア?

よろしくお願いします!