問題タブ [sql-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.

0 投票する
2 に答える
33382 参照

performance - 「TABLE ACCESS BY INDEX ROWID」は、インデックスまたはテーブルを使用するオプティマイザーを意味しますか?

TABLE ACCESS BY INDEX ROWIDOptimizer がrowidインデックスまたはスキャン テーブルにアクセスして を取得していることを意味しrowidsますか?

現在、クエリは数秒で終了しています。しかし、計画では、インデックスを使用しないと述べており、両方のテーブルに適切なインデックスがあります。

0 投票する
2 に答える
78 参照

mysql - NOT IN クエリをより良いパフォーマンスに変換する

MySQL 5.0 を使用しており、このクエリを微調整する必要があります。これで私ができるチューニングを誰か教えてください。

0 投票する
1 に答える
1703 参照

tsql - Sybase ASE - パフォーマンスの Select Into と Insert Select

ログに記録されていないため、select into のパフォーマンスは、insert/select の組み合わせよりも優れていることがわかりました。しかし、今日、私は別のシナリオに遭遇しました。物理テーブルから一時テーブルへの選択を行っており、410 秒で 240 万レコードを挿入しますが、これを選択ステートメントに分割して最初にテーブルを作成し、次に挿入/選択を使用してデータを挿入すると、同じクエリで、10.6 秒で 240 万件のレコードがクリックされます。

私は混乱しています、理由は何ですか?

410 秒で 240 万件のレコードが挿入されました

10.6 秒で 240 万件のレコードを挿入

ジャンからのコメント後

今、その行動は奇妙です。最初にクエリ 1 を実行し、次にクエリ 2 を実行すると、結果は上記のようになります。しかし、順序を入れ替えると、クエリ 1 は ~9 秒で実行され、クエリ 2 は ~7 秒で実行されます。

クエリ 1

クエリ 2

0 投票する
3 に答える
90892 参照

sql - spid のステータスが一時停止されている理由を調べる方法は? spid が待機しているリソースは?

実行するEXEC sp_who2 78と、次の結果が得られます。

spid 78 の sp_who2 の結果

ステータスが中断されている理由を確認するにはどうすればよいですか?

このプロセスはINSERT、コストのかかるクエリに基づいた重いものです。SELECT複数のテーブルからデータを取得し、約 3 ~ 400 万行を別のテーブルに書き込むビッグ。

ロック/ブロックはありません。

waittypeリンク先はですCXPACKET。下の写真でわかるように 9 つの 78 があるので、これは理解できます。

私が気になっていること、そして本当に知りたいことは、なぜSPID78 の背番号 1 が出場停止になったのかということです。

のステータスSPIDが中断されている場合、プロセスがリソースを待機していることを意味し、リソースを取得すると再開されることを理解しています。

これについての詳細はどうすればわかりますか? 何の資源?なぜ利用できないのですか?

以下のコードとそのバリエーションをよく使用しますが、SPIDが中断された理由を調べるために他にできることはありますか?

私はすでにsp_whoisactiveを使用しました。この特定の spid78 で得られた結果は次のとおりです: (画面に合わせて 3 つの写真に分割)

ここに画像の説明を入力

0 投票する
1 に答える
95 参照

sql - 移行後の SQL パフォーマンス分析

多くの Oracle DB を ESX 環境 (まったく同じシステム、DB バージョンなど) の新しい仮想マシンに移行します。異なるストレージが使用されているため、私の懸念はディスク IO パフォーマンスです。後で比較するために、移行前と移行後に SQL 負荷チェックを実行する必要があります。これ以上詳細なパフォーマンス分析を行う時間はないので、非常に簡単なテストを行うことにしました。

40 000 000 行の挿入を実行し、移行前と移行後の操作​​の時間を測定します。

DB に他のアクティビティがなければ、この種のテストで十分ですが、テスト中に他の接続を停止することはできません。そのため、他のワークロードがテスト挿入の結果に影響を与える可能性があります。

この問題を解決するための私の考えは、一連のテストを実行し、各テスト中に統計を収集して、各テストが実行されたときの環境を把握することです。次に、同様のワークロードで実行されたテストのみを比較します。

この問題へのアプローチ方法、このアイデアについてどう思いますか、どのような統計を収集する必要があるか教えていただけますか?

0 投票する
1 に答える
1531 参照

sql - DBA_HIST_SQLSTAT: 実行回数がゼロである間の経過時間はゼロではありません

こんにちは、ビュー dba_hist_sqlstat のいくつかの sql_ids 統計で奇妙な状況が見つかりました。実行値がゼロに等しい場合、それらはゼロ以外の経過時間値を持つようです。それがどのように可能かわかりません。セッションが非アクティブであるか、待機イベントが発生している場合に発生する可能性があります。これはどういう意味ですか?

0 投票する
3 に答える
2995 参照

sql - Oracle で NOT EXISTS のパフォーマンスを改善する方法

私のSQL文は次のようになります。table1 と table3 には 1000000 行以上あり、table2 には 100 行あります。この SQL ステートメントは非常に低速です。100秒以上かかります。それを改善する方法はありますか?

0 投票する
1 に答える
10351 参照

sql - 結合のない Oracle IN 句のパフォーマンスへの影響は何ですか?

この形式のクエリは、平均して約 100 個の in 句要素を使用し、まれに 1000 個を超える要素を使用します。要素が 1000 を超える場合は、in 句を 1000 (Oracle の最大値) に分割します。

SQL の形式は次のとおりです。

私が選択しているテーブルは巨大で、in 句にあるものよりも数百万行多く含まれています。私の懸念は、オプティマイザがテーブル スキャンを実行することを選択する可能性があることです (データベースには最新の統計情報がありません - そうです - わかっています ...)

主キーの使用を強制するために渡すことができるヒントはありますか?主キーのインデックス名を知らなくても、おそらく ... /*+ DO_NOT_TABLE_SCAN */?

そのようなデータを引き戻すための創造的なアプローチはありますか?

  1. 往復回数が最も少ない
  2. 最小数のブロックを読み取ります (論理 IO レベルで?)
  3. これで速くなるのか..
0 投票する
0 に答える
166 参照

sql - SELECT (MIN) vs ORDER BY ASC WITH FOR UPDATE

テーブル test1 (TXID プライマリ キー、STATE、NEXTRUN、TARGET) があり、状態 (入力として渡される) の最小の NEXTRUN を持つ行を取得したいと考えています。

MIN() を使用したクエリ 1:

説明計画は示しています ( 2 TABLE ACCESS FULL)

ORDER BY と ROWNUM を使用したクエリ 2:

説明計画:

デッドロックの防止とパフォーマンスの点で、どちらが優れたクエリですか? クエリは、複数のスレッド (接続) から呼び出されます。最初のケース (2 TABLE ACCESS FULL) でデッドロックが発生することがあります。したがって、クエリ2を試しています。