問題タブ [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.
sql - SQL Server でのクエリの最適化
上記のクエリは SQL Server 2014 で 12 秒かかります。クエリを調整するアイデアはありますか? C1、C2、C3 列にインデックスがあります。
観察: 上記のクエリで、OR から条件を削除すると (つまり、
次に、0秒で結果を返します。
各テーブルには約 500,000 のレコードがあります。
sql - Oracle オプティマイザーは xmlagg 関数をヒントにします
データのいくつかのxmlaggsを使用して、いくつかのテーブル/ビューなどを呼び出す関数があります。
何らかの理由で、この追加情報がコードの残りの部分 (キー値のインデックス作成など) で使用されていない場合でも、追加情報を取り込むとパフォーマンスが向上します (再度使用されるキー値のインデックス作成など)。
私は高速および低速のもので tkprof を実行しましたが、いくつかの問題が見られます.
私の主な問題は、さらに下を見ると、ビューの 1 つのコストが高いことがわかります。高速なクエリは基になるテーブルで 3 つのインデックスを使用しているのに対し、低速なクエリは何も使用していません。
ヒントを挿入しようとしました:
ただし、まだ完全なテーブル スキャンを実行しています。オプティマイザーのヒントを間違った場所に配置したり、間違った構文を使用したりしていませんか?
編集-さらに調査を行っていますが、ネストされたループではなくハッシュ結合を行うOracleからのノックオンのようですが、選択は複数のテーブルからのものです-3つすべてでUSE_NLを強制できますか? pl/sql が何度も呼び出されているため、これを引き起こしている領域を知るにはどうすればよいですか。
更新 28/08 - 報奨金が追加されました。追加で必要なものがあれば教えてください。
更新 01/09 -
コメントアウトされた2つの選択があり、どちらかがコメント解除されると、より高速に実行されるクエリになります。t1 と t2 は、クエリの他の場所ではまったく使用されていません。
Update 01/09 実行計画は次のとおりです: 速いhttp://pastebin.com/pbJMSxrB 遅いhttp://pastebin.com/zt3eUYNd
私が修正したいのは86行目からの高コストのものです。これは、ここでのフル スキャンの結果であるか、さらに上の結合の結果である可能性があります。
mysql - クエリ全体を実行するための MySQL クエリの最適化 - クエリの実行時間を短縮するにはどうすればよいですか?
問題
以下に貼り付けたクエリがあります。私が直面している問題は、レイテンシーを現在の約 10 秒よりも短くするにはどうすればよいかということです。
クエリの目的
このクエリの目的は、日付値を含むすべてのレコードを取得し、特定の日付に該当するすべてのレコードの現在のカウントを収集することです。 日付値は、以下の sqlfiddle 内で計算されます。 最終的な目的は、現在の合計を折れ線グラフとしてグラフに表示することです。上向きにカウントされるので、成長グラフです。
私が表示しているグラフは、すべての私の記録 (日付値を持つアクション アイテム) のビルドアップ グラフと呼ばれます。
問題の説明
私の問題は、少なくとも 10 秒でクエリの結果を取得していることです。
質問
グラフの読み込みを停止させないように、クエリのレイテンシを加速および短縮するにはどうすればよいですか?
完全なスキーマと、正常に実行される上記のクエリの一部
(自分のマシンから実行することはできますが、sqlfiddleでメインクエリをまったく実行するのに苦労しています)。
http://sqlfiddle.com/#!9/865ee/11
どんな助けや提案も大歓迎です!
編集
私のカテゴリーインターフェースのサンプルスクリーンショットを追加しました
カテゴリ (最初のテーブル) には、カテゴリ名というフィールドがあり、Team、Department、Source、Project_Phase の 4 つの値のいずれかを展開または削除できると想定しています。
CategoryName (2 番目のテーブル) には、各カテゴリ (最初のテーブル) の実際の許容値である categoryvalue というフィールドがあります。
例 - チーム 1、チーム 2、チーム 3 は、カテゴリ名内のカテゴリ値であり、チームのカテゴリに対応します。
カテゴリー
sql - selectステートメントでのOracleサブクエリのチューニング
以下のようなマスターテーブルと参照テーブルがあります。
select
正しく機能する私の最初のステートメントは次のとおりです。
ただし、パフォーマンスの問題に対処するために、次のselect
ステートメントに変更しました。
AMOUNT2
およびCOUNT1
列の値は同じままです。ただし、AMOUNT1
は参照テーブルとの結合のため、値が乗算されます。
の追加の結合条件を使用して、さらに 1 つの左結合を追加できることはわかっていGROUP_ID
ます。しかし、それはサブクエリを使用することと何ら変わりはありません。
値を乗算せずに、左結合を 1 つだけ使用してクエリを機能させる方法はありAMOUNT1
ますか?
postgresql - Postgres 9.4: 10 倍遅く実行される ANY ARRAY ルックアップでのクエリ プランナーのハッシュ結合の選択を修正する方法
もちろん、これらの問題を理解するのは複雑で、多くの情報が必要になる可能性があることは理解していますが、この特定のケースに対する既知の問題または回避策があることを願っています. 最適ではないクエリ プランを引き起こすクエリの変更を絞り込みました (これは Postgres 9.4 を実行しています)。
次のクエリは、約 50 ミリ秒で実行されます。テーブルは約 200 万のtag_device
エントリを持つジャンクション テーブルで、devices
テーブルには約 150 万のエントリがあり、タグ テーブルには約 500,000 のエントリがあります (注: 実際の IP 値は作成されたものです)。
注意すべき点がいくつかあります。 device_ip
ip4r モジュール ( https://github.com/RhodiumToad/ip4r ) を使用して IP 範囲ルックアップを提供しており、この列には Gist インデックスがあります。上記のクエリは、次のクエリ プランを使用して約 50 ミリ秒で実行されます。
検索対象の ARRAY 内の IP アドレスの数を増やすと、クエリ プランが変更され、大幅に遅くなります。したがって、クエリの高速バージョンでは、配列に 30 個の項目があります。これを配列内の 80 項目に増やすと、クエリ プランが変更され、大幅に遅くなります (10 倍以上)。クエリは、他のすべての点で同じままです。新しいクエリ プランでは、マージ結合とネストされたループの代わりにハッシュ結合を使用します。以下は、配列に 30 個ではなく 80 個の項目がある場合の新しい (はるかに遅い) クエリ プランです。
デフォルトのクエリ プランを使用した上記のクエリは、約 500 ミリ秒で実行されます (10 倍以上遅くなります)。を使用してハッシュ結合をオフにするSET enable_hashjoin= OFF;
と、クエリ プランはマージ結合の使用に戻り、配列内の 80 個のアイテムで約 50 ミリ秒で再び実行されます。
繰り返しますが、ここでの唯一の変更は、検索される ARRAY 内のアイテムの数です。
プランナーがなぜ大規模なスローダウンをもたらす悪い選択をしているのか、誰か考えている人はいますか?
データベースはメモリに完全に収まり、SSD 上にあります。
また、クエリに制限を追加したときにプランナーが tag_device テーブルのインデックスを使用しないという問題に遭遇したため、CTE を使用していることも指摘したいと思います。基本的にここで説明されている問題: http://thebuild.com/blog/2014/11/18/when-limit-attacks/。
ありがとう!
mysql - WordPress テーマの MySQL Select ステートメントの改善
私は Industrialthemes の WordPress テーマ エンジンを使用しています。フロント ページのレンダリングでは、MySQL データベースで実行するのに約 0.4 秒を使用する多くのクエリが使用されていることがわかります。このように:
このクエリを改善する方法はありますか? 私の知る限り、WordPress のインストールでは、関連するすべてのフィールドにデフォルトのインデックスが設定されています。SQL Select ステートメントのチューニングに関する私の知識は十分ではないため、専門家がこの問題について私を助けてくれることを期待しています。ありがとう。
(コメントより)
(後で...)
mysql - Mysql クエリがディスク上のスペースを消費しすぎています
mysql で次のクエリを実行しようとしています。
にhuge_table
は約 2000 万行と 26 列がありますが、フィルター処理に必要なのはそのうちの 5 つだけです。これらの 21 個の余剰列はスペースを消費しすぎていると思います (100 秒で約 20GB!)。使用するスペースを少なくするために、必要な 5 つの列のみを分離する方法はありますか? または、結合を使用しない他の形式ですか?
それとも、多くのスペースが消費されている他の理由がありますか?
**** アップデート ****
元のクエリは次のとおりです。
そして彼の説明: