問題タブ [query-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.
oracle - Oracle の部分的な値にインデックスを付ける
複合インデックスを作成しています。
そして、私のクエリは次のようなものです
上記のクエリでは数行 (< 10) しか返されませんが、先頭の列 "A" はあまり一意ではなく、値に対して 50 万件のレコードを返すことができます。
上記のクエリを実行すると、値 A=:1 ですべてのブロックをスキャンするため、論理読み取りが多すぎます。
部分的なデータだけにインデックスを付けるためのトリック/回避策はありますか? たとえば、そのデータのみが B IS NOT NULL のインデックスに入れられます。これにより、インデックスが非常にコンパクトで高速になります。
sql - SQL Server - 範囲内の日付の効率的な生成
SQL Server 2016 を使用しています。
日付の範囲に対してオプションのリストを生成するストアド プロシージャがあります。わかりやすくするために日数に対する運送オプションがありますが、ここでは詳細には重要ではありません。
ストアド プロシージャの最初のステップでは、追加データを保存するための日付のリストが生成されます。このリストの生成には、残りのコードよりも大幅に時間がかかります。このプロセスは個々に短いですが、呼び出しの数は、この 1 つのコードがシステムに他の何よりも大きな負荷をかけていることを意味します。
それを念頭に置いて、いくつかのオプションの効率をテストしてきました。
反復共通テーブル式:
while ループ:
事前入力された日付のテーブルからのルックアップ:
効率の観点から、1年分の日付を1000回生成するテストを行ったところ、次の結果が得られました。
- CTE: 10.0 秒
- 間: 7.7 秒
- クエリ: 2.6 秒
このことから、クエリは間違いなく高速なオプションですが、作成および維持する必要がある日付の永続的なテーブルが必要です。これは、クエリが「自己完結型」ではなく、指定された日付範囲外の日付を要求できることを意味します。
範囲の日付を生成するより効率的な方法、または上記に適用できる最適化を知っている人はいますか?
どうもありがとう。