問題タブ [query-optimization]
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-server - キャッシュされるまで実行速度が遅いクエリを修正するにはどうすればよいですか
ライブ環境でタイムアウトを引き起こしているクエリがいくつかあります。(>30 秒)
プロファイラーを実行し、実行中の正確な SQL を取得して Management Studio から実行すると、最初の実行に時間がかかり、その後は実行ごとに数百ミリ秒に低下します。
これは明らかに SQL がデータをキャッシュし、すべてをメモリに取得することです。
SQL をより高速に実行できる最適化を行うことができると確信しています。
私の質問は、これらのクエリを 2 回目に実行したときにデータが既にキャッシュされていて高速である場合、これらのクエリを「修正」するにはどうすればよいですか?
sql - 少ないクエリで関連タグ付きのブログ投稿のリストを取得する
この2つのテーブルをイメージしてください。
これは、(テーブル構造を変更せずに(はい、正規化されていなくてもかまいません))、可能性の低いクエリを使用してすべてのタグが添付されたアイテムのリストを取得するための最良の方法です(つまり、10個のアイテムを取得するために11個のクエリを実行しません) )?
sql - GROUP BY/HAVING を使用してサブクエリをリファクタリングしますか?
特定の日付範囲に複数のカテゴリのそれぞれからいくつのアイテムが表示されるかを判断するために、MySQL クエリを作成しています。私の最初の試みは次のようになりました:
テーブルは非常に大きく、クエリをリファクタリングして高速化したいと考えていますが、方法がわかりません.GROUP BY/HAVINGステートメントを使用してこれを書き直すことができますか、それとも別の方法がありませんか?
編集:サンプル結果セット - 次のようなもの:
tsql - クエリ最適化 TSQL など
次のような sql ステートメントがあり、変数 @FOO がコードのどこかに設定されているとします。
クエリ オプティマイザーは、最初に OR の 2 番目の側 (@FOO IS NULL) を実行するほどスマートですか? (別の仮定) フィールド比較を行うよりも null チェックを行う方が速いためですか?
私はいくつかの非公式のベンチマークを行いましたが、違いが見られないだけでなく、試行で異なる結果時間が得られ、適切な比較を行うことができなくなりました。
sql - SQL で長い比較を処理する方法
私は SQL に病的な問題を抱えているので、SQL の問題を処理するための迅速なソフトウェア アプリケーションを構築することで、データベースの問題をすべて整理しています。
(この場合もそうしています)
StackOverflow のおかげで、私は正しさを恥じることができると思うので、実際の SQL または T-SQL 自体でこの種の SQL トラブルシューティングを行う方法を学びたいと思います (可能であれば):
私は持っている:
データベース DB1 テーブル A (ユニット番号、ビル番号)
データベース DB2 テーブル B (unitNo、BuildingNo)
データベース DB2 からテーブル B に存在しない、データベース DB1 からテーブル A に存在するユニット (ユニット番号) を考え出します。
同じユニット番号を持つ複数のユニットが存在する可能性があります。これは、同じユニット番号が異なる建物のユニットに与えられる可能性があるためです。
どのデータベースにも書き込みアクセス権がありません。
これが「ギミー・テ・コズ」の投稿と見なされないことを願っています。私よりもSQLに精通している人がこの種のアルゴリズムをソートする方法を知りたいです.チュートリアルやヒントへの投稿は大歓迎です.完全なコードは必要ありません.しかし、それが理にかなっているのであれば、そうしてください。
最初は、あるテーブルからすべてのユニット番号を取得し、他のテーブルからの選択でそれらを除外できると思っていました。
これは通常は機能しますが、1 つのテーブルからのユニットの数が非常に多いため、これを試みると SQL サーバーが次のようにクラッシュします。
「スタックスペースが不足しました」
ありがとう、
リック
sql - 期間を選択してクエリを最適化する
次の表を考えます。
定数をすばやく検索する方法はありますか?
例えば
私はMySQLを使用しています。いずれかのフィールドにインデックスがある場合でも、範囲をチェックする必要があります。さらに、両方のフィールドにインデックスを付けても違いはありません (最初のフィールドのみが使用されます)。
フィールド/インデックスをテーブルに追加できます (したがって、両方のフィールドの情報を含むインデックス付きの構築フィールドを追加することは許容されます)。
PSこれの必要性は、この質問から来ました:句の間を使用するSQLを最適化する
mysql - mysqlは最後のn行から選択します
インデックス (オートインクリメント) と整数値を持つテーブルがあります。テーブルの長さは数百万行です。
テーブルの最後の n 行に特定の数値が含まれているかどうかを最も効率的に検索するにはどうすればよいですか?
sql - SQL削除のパフォーマンスの向上
idフィールド(主キー)に基づいてテーブルからいくつかの行を削除するクエリがあります。これは非常に単純なクエリです。
問題は、IDの数が膨大になる可能性があることです(例:70k)。そのため、クエリに長い時間がかかります。これを最適化する方法はありますか?(私たちはsybaseを使用しています-それが重要な場合)。
sql-server - SQLクエリのブックマークルックアップのみのオプションを使用したインデックスシーク?
レガシー システムの非常に幅の広いテーブルに対する SQL クエリの最適化に取り組んでいます。さまざまな理由により、現時点ではテーブルを絞り込むことができません。
作成したインデックスに対してインデックス シークを実行し、ブックマーク ルックアップを使用して必要な追加の列を検索し、インデックスに存在しないため、クエリの実行が遅くなります。ブックマーク ルックアップは、クエリ時間の 42% を占めます (クエリ オプティマイザによると)。
テーブルには 38 の列があり、その一部は nvarchars であるため、すべての列を含むカバリング インデックスを作成することはできません。すべての列をカバーするインデックスを作成してインデックスの交差を利用しようとしましたが、これらの「カバーする」インデックスは実行計画によって選択されず、使用されません。
また、38 列のうち 28 列がこのクエリによって引き出されるため、テーブル内の列の 28/38 がこれらのカバー インデックスに格納されることになるため、これがどの程度役立つかはわかりません。
ブックマーク ルックアップは十分に優れていると思いますか、それとも別の選択肢は何でしょうか?
(これが SQL Server 2000 であることを指定する必要があります)