問題タブ [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 - 2 億行以上のテーブルに含まれるインデックス
2 億件をわずかに超えるレコードを含むテーブルにインクルード インデックスを作成するのに苦労しています。テーブルの構造は次のとおりです。
問題は、次のクエリを実行するときです。
..その後、結果は〜27ミリ秒で取得されます(non-clustered index
on列がありますUserId
)。
ただし、追加の列を選択しようとすると、たとえば次のようになります。
..その後、結果は約 2,000 ミリ秒で返されます。
実行計画を見ると、
..明らかに、Key Lookup
ここで最も時間がかかるのはこれです。
に次のような組み込みインデックスを作成しようとしましたVatId
。
..しかし、このクエリを数時間実行した後、エラーが発生します
プールのメモリ不足 (デフォルト)
(私の SQL Server インスタンスは 8 GB RAM、Core i7 で実行されます)
私の質問: これを取り除きClustered Key Lookup
、パフォーマンスを向上させる他の方法はありますか?
どうもありがとう
編集:
列Id
にはクラスター化インデックスがあります。
を呼び出すとset statistics io on;
、次の結果が生成されます。
sql - 揮発性テーブルを使用せずに Teradata の巨大な値リストを最適化する
`のような値リストを持っています
次に、リストを揮発性テーブルに押し込むのが最善の方法です。ただし、これはcognosを介して行われており、IBMはTeradataの揮発性テーブルが何であるかを知るほど賢くありません. 除外ロジックを使用して、揮発性のテーブルの内容を調べることができればよかったのにと思います。したがって、 volatile table がなければ、
where a.c1 in ( list )
5K のような値を持つ値リストがあります。そのリストをレポートに残すことは、コストがかかることがわかっています。レポートに持ち込む前に、この種のリストをどこかに保存できないかと考えました。CTE についてはどうであり、 CTE に存在するものを使用すると、同様の利益が得られます。
postgresql - Amazon RDS Postgres でグループ化が遅すぎる
Amazon RDS db.r3.4xlarge インスタンス (16CPU、122GB メモリ) で Postgres 9.4.4 を実行しています。私は最近、大規模なテーブル (〜 2 億 7000 万レコード) でかなり単純な集計を必要とするクエリの 1 つに出くわしました。クエリの実行には 5 時間以上かかります。
大きなテーブルの結合列とグループ化列には、インデックスが定義されています。work_memとtemp_buffersをそれぞれ1GBに設定して実験してみましたが、あまり役に立ちません。
これがクエリと実行計画です。どんなリードも高く評価されます。
これが実行計画です -
mysql - mysqlでレコード数を取得する高速な方法
2 つのテーブルを結合するために mysql でクエリを作成しています。また、両方のテーブルには 50,000 を超えるレコードがあります。
表 EMP 列 empid,
事業、
コード、
状態
テーブル EMPINFO
せっかちな、
事業、
コード、
プロジェクトタイプ、
使った時間、
スキル
各テーブルには候補キー [empid、project、code] があります。
したがって、INNER結合を使用してテーブルに結合すると
結果は出ていますが、外側のクエリに count(*) を追加してレコード数をカウントすると、何か接続に失敗するのに時間がかかります。
レコード数を取得するためにスピードアップする方法はありますか?
そして、内部結合クエリを高速化し、両方のテーブルに同じ候補キーを持つための提案をもっと聞きたいです。
sql-server - SQL Server - NOT EXISTS を使用する代わりに
一時テーブル変数にロードする EntityID 列を持つ約 200,000 レコードのリストがあります。
Temp テーブルの EntityID が dbo.EntityRows テーブルに存在しない場合、Temp テーブル変数から任意のレコードを挿入したいと考えています。dbo.EntityRows テーブルには、約 800,000 のレコードが含まれています。
dbo.EntityRows テーブルに約 500,000 のレコードがあった場合に比べて、プロセスは非常に遅くなります。
私の最初の推測は、NOT EXISTS 句のためです。Temp 変数の各行は、dbo.EntityRows テーブルの 800k 行全体をスキャンして、存在するかどうかを判断する必要があります。
質問: NOT EXISTS を使用せずに、この比較チェックを実行する別の方法はありますか?
編集:コメントに感謝します。これがクエリです(IF NOT EXISTSチェックの後の部分を省略しました。その後、NOT EXISTSの場合、4つのテーブルに挿入します)。
mysql - このクエリのパフォーマンスを改善する方法
インデックスを作成したり、mysql の設定を変更してクエリを改善したりしようと頭を悩ませましたが、うまくいきません。誰かが私を助けることができますか?
私は 400 万を超える製品を持つシステムを作成しており、ユーザーの応答時間を改善するためにマテリアライズド ビューを作成しています。
このビューを作成するには、以下のクエリを使用します
ただし、時間の経過と製品の増加に伴い、このテーブルが作成されるまでに約 4 時間かかります。テーブルや構成のシフト性能指標を改善することは可能ですか?
スクリプト作成テーブル
と
と
と
sybase - sybase iq 説明計画
Sybase IQ 16 のパフォーマンス チューニングに取り組んでいます。クエリを調整するために専門家の助けを求めています。
1)計画出力を生成するコマンドはありますか。2)クエリを調整するために従うべき一般的なガイドライン/手順はありますか。