問題タブ [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 - REF CURSOR を返す SQL クエリのチューニング
関数で参照カーソルを使用して値を返しています。この関数は、さまざまな入力値に対して再帰的に呼び出されています。
私のパッケージ定義は次のとおりです。
私の機能は以下の通りです。
カーソルの選択ステートメントに並列ヒントを使用しないと、クエリのパフォーマンスが非常に低下し、複数の再帰呼び出しの場合、データに応じてクエリに 8 時間から 24 時間かかります。
並列ヒントを使用すると、クエリのパフォーマンスが向上し、実行が完了するまでに 1.30 時間かかります。ただし、250GBのTEMPSPACEが必要です。
このクエリを調整するための解決策を教えてください。
sql - Oracle でのデータ ロードを伴う Plan Select クエリの実行が遅い
データベース - Oracle 11g
3,000 万レコードのテーブル TB_ETD_NON_MKTS_TRANS_OP があります。
REPORTING_PARTY、REPORTING_TIMESTAMP にインデックスがあります。
としてクエリを実行しています
説明計画の出力は次のとおりです
sql - DB2: スカラー関数を使用して SQL 照会のパフォーマンスを改善する
最適化しようとしている大きなクエリがあります。変更したい条件の 1 つを以下に示します。つまり、スカラー関数を削除しようとしています。
現時点の:
に
Explain プランを確認したところ、あまり改善が見られませんでした。実際には、4532.380859 から 4532.601074 までの推定コスト
どんなアドバイスも役に立ちます。
postgresql-9.4 - PostgreSQL 9.4 クエリのチューニング
実行速度が遅すぎるクエリがあります。
この関数sysdate()
は、タイム ゾーンなしで現在のシステム タイムスタンプをlast_day()
返し、月の最終日を表すタイムスタンプを返します。これらを作成したのは、Hibernate が Postgres のキャスト表記を好まないためです。
問題は、プランナーがインデックスが配置されている場所で全テーブル スキャンを実行していることです。上記のクエリの実行計画は次のとおりです。
プランナは、最大のテーブルで非常にコストのかかる全テーブル スキャンを実行することを選択していることに注意してip_address_usage_histories
くださいvm_ip_address_histories
。構成パラメーターenable_seqscan
をオフに変更してみましたが、問題が悪化し、合計実行時間は 63 秒になりました。
前述のテーブルの説明は次のとおりです。
Postgres には、プランナーに指示するためのクエリ ヒントがないようです。from 句の構文も試しましたinner join ... on ...
が、改善されませんでした。
更新 1
Postgres には月の初日を返す関数がないため、この関数を標準関数に置き換えようとはしていません。
sql - 次のクエリを調整するにはどうすればよいですか?
このクエリは私に望ましい結果をもたらしますが、毎回このクエリを実行することはできません。 .so、この結果を保存したり、クエリを変更してコストを削減したりする他の方法はありますか?
sql-server - さらに分析するために、SSMS でプログラムによって SET STATISTICS PROFILE ON を取得します。
Management Studio を介して T-SQL クエリを実行する場合、SET STATISTICS PROFILE ON
統計とクエリ実行計画をテキストとして見栄えの良い形式でキャプチャするために使用できます。
SSMS の [メッセージ] タブで視覚的に分析するのではなく、プログラムで分析できるように、ストアド プロシージャを実行した後にクエリ実行プランを収集するにはどうすればよいですか?
使用できますSET SHOWPLAN_ALL ON
が、見積もりではなく実際の計画を見たいのですが、同じ問題があります。結果を自動的に取得するにはどうすればよいですか?
DMV から XML プランを入手することもできますが、テキスト形式のプランはどうすれば入手できるのでしょうか。
ここで非常によく似た投稿を見つけましたが、そうではありませんでした
以下は、私が「見栄えの良いテキスト形式」と呼んでいるものの例です。
|--Nested Loops(Inner Join, OUTER REFERENCES:([AdventureWorks].[Person].[Address].[AddressID]))
|--Filter(WHERE:(STARTUP EXPR(suser_sname()=CONVERT_IMPLICIT(nvarchar(4000),[@2],0))))
| |--Index Scan(OBJECT:([AdventureWorks].[Person].[Address].[IX_Address_StateProvinceID]))
|--Clustered Index Seek(OBJECT:([AdventureWorks].[Person].[Address].[PK_Address_AddressID]), SEEK:([AdventureWorks].[Person].[Address].[AddressID]=[AdventureWorks].[Person].[Address].[AddressID]), WHERE:([AdventureWorks].[Person].[Address].[City]=N'Snohomish') LOOKUP ORDERED FORWARD)
sql-server - フィルタリングされた統計を使用する場合
以下のリンクでフィルタリングされた統計を調べていました。
http://blogs.msdn.com/b/psssql/archive/2010/09/28/case-of-using-filtered-statistics.aspx
データは大きく歪んでおり、1 つのリージョンの行が 0 で、残りはすべて異なるリージョンからのものです。以下は、問題を再現するためのコード全体です
私の質問は、両方のテーブルで以下の統計が利用可能であることです
テーブル領域:
テーブル販売:
1.以下のクエリで見積もりがうまくいかなかった理由
2.著者ごとにフィルター処理された統計を作成したとき、見積もりを正しく表示できましたが、フィルター処理された統計を作成する必要があるのはなぜですか。単純な統計を作成した場合でも、同じ結果が得られたので、クエリにフィルター処理された統計が必要であるとどのように言えますか.
これまでに出くわした最高の
もの
しかし、フィルタリングされた統計がここで違いを生んだ理由をまだ理解できていません
前もって感謝します。 更新:7/4
マーティンとジェームズが答えた後に質問を言い換えると:
1.kimberelyスクリプト以外 にデータの歪みを回避する方法はありますか?推定するもう 1 つの方法は、値の行数をカウントすることです。
2.経験上、データの歪みに関する問題に直面したことがありますか?私はそれが大きなテーブルに依存していると思います.しかし、私はいくつかの詳細な回答を探しています.
3. SQL がテーブルをスキャンするための IO コストを取得する必要があります。また、統計情報の更新をトリガーするときに発生するクエリに対して、いくつかのブロッキングが発生することもあります。
理由は、DTA 入力にも基づくいくつかの条件に基づいて、フィルター処理された統計を作成することを考えているからです。
再度、感謝します