問題タブ [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.
sql - SQL Server でのインデックス付きビューとストアド プロシージャのパフォーマンスの比較
私はつい最近、SQL Server でビューのインデックスを作成できるようになったことに気付きました ( http://technet.microsoft.com/en-us/library/cc917715.aspxを参照)。実行パスがキャッシュされているストアド プロシージャ内の同じクエリと比較して、インデックス付きビューに対するクエリのパフォーマンスが向上する時期を把握しようとしています。
たとえば、次のようにします。
日付は実行されるたびに異なるため、これがビューである場合は、ビューに含めず、WHERE
ビューに対する選択の一部として使用します。ストアド プロシージャの場合は、日付がパラメーターになります。テーブルには約 300,000 行あることに注意してください。それらの 200,000 は、日付の where 句を満たします。group by の後に 10,000 が返されます。
これがインデックス付きビューである場合、実行パスをキャッシュする機会があったストアド プロシージャよりも優れたパフォーマンスが期待できますか? それとも、プロセスはより高速になりますか?それとも、その差は無視できるものでしょうか? 「両方を試してみてください」と言うことができることは知っていますが、結果に誤った偏りを与えて誤った結論に導く可能性のある要因が多すぎるため、その背後にある理論と予想される結果をもっと知りたいと思います. .
ありがとう!
php - 10,000 レコードの LIKE 演算子を使用して mysql クエリを最適化する
ノート:
私が考えたように、実際の問題は、私がタグ ID に使用している IN 句が原因です。テキスト検索のクエリの一部を変更しても、あまり役に立ちませんでした。クエリを改善する方法はありますか?
サーバーでの実行中にクエリに時間がかかりすぎます。ここで Partha S はユーザーが入力した検索項目です。テーブルの連絡先には個人情報が含まれ、タグにはカテゴリ名と ID が含まれます。また、contacts2tags テーブルには contactid と tagid が含まれており、値はそれぞれ contact と tags の id に似ています。
更新: 提案に従って、完全一致検索の LIKE 演算子を削除し、後者の場合は LIKE の代わりに MATCH(..) AGAINST(..) を使用しました。最初の変更でパフォーマンスが少し向上しましたが、MATCH() AGAINST() を使用しても実行時間は驚くほど変わりませんでした。更新されたクエリは次のとおりです。PS MATCH(all cols) AGAINST(search item) と MATCH(single cols) AGAINST (search item) を OR で組み合わせて使ってみました。提案してください。ありがとう
mysql - 3 つの異なる列に対する MAX、WHERE、および GROUP BY を使用した SQL クエリの速度の向上
約 2,000 万行のテーブルで完了するのに約 60 秒かかるクエリを高速化しようとしています。
この例では、テーブルに 3 つの列 (id、dateAdded、name) があります。id は主キーです。テーブルに追加したインデックスは次のとおりです。
私が実行しようとしているクエリは次のとおりです。
日付はクエリごとに異なります。
これの目的は、追加された日付以前の各名前の最新のエントリを取得することです。
クエリで Explain を使用すると、(id、name、dateAdded) インデックスを使用していることがわかります。
編集: コメントから 2 つの新しいインデックスを追加しました:
編集: テーブル作成スクリプトを追加しました。
編集: HeavyEが提供する回答からの説明は次のとおりです。
sql - postgresql 9.1 の INDEX + ORDER BY + LIMIT + TRIGRAM についての説明
テーブル:
索引:
クエリ:
質問:
クエリに ORDER BY のみが含まれている場合ではなく、ORDER BY + LIMIT の組み合わせでインデックスを通過するのはなぜですか?
もちろん、インデックスを使用すると、クエリの速度が向上します
私が見つけた唯一の説明はここにありました: http://www.postgresql.org/docs/9.1/static/indexes-ordering.html
しかし、それは詳細を欠いています
編集#1:
LIMIT を使用したクエリ プラン:
NO LIMIT のクエリ プラン:
sql - sys.dm_exec_procedure_stats - 正しく解釈していますか
dm_exec_procedure_stats を使用する以下のクエリの [Total Duration (s)] 列が、クエリが結果を返すのにかかる平均時間を示しているかどうかを確認できますか? これは、これらのクエリが結果を返すのにかかる時間の 1 つの要素にすぎないことを懸念しています。
時間を割いて見てくださった皆様、ありがとうございました。
どんな助けやアドバイスもいただければ幸いです
sqlperformance - より多くの論理読み取り、より短い時間でのクエリ実行
状況 1
状況 2
状況 1では、クエリが 4 秒で実行され、左結合が使用されます
&
状況 2 では、クエリが 3 秒で実行され、外部適用が使用されていますが、論理読み取りが非常に高くなっています。
では、性能的には何が良いのでしょうか?
sql - WHERE 句をカバーするフィルター選択されたインデックスで使用するキー列は?
WHERE フィルターに完全なクエリ条件が含まれるように、フィルター選択されたインデックスを作成しています。このようなインデックスを使用すると、SQL ではキー列を追加する必要がありますが、キー列は不要になるようです。たとえば、次の表を考えてみましょう。
テーブルに対するクエリは、処理する新しい請求書を探します。つまり、次のようになります。
したがって、フィルター処理されたインデックスを使用してこれらのクエリを調整できます。
私の質問: キー列は何にする必要がありIX_Invoice_IsProcessed_IsInvalidated
ますか? おそらくキー列は使用されていません。私の直感では、小さくてインデックス構造を比較的フラットに保つ列を選択することにしました。テーブルの主キー ( Id
) を選択する必要がありますか? フィルター列の 1 つ、または両方ですか?