2017-06-21 12 views
2

Oracleデータベースに接続するSpringアプリケーションを作成しています。Oracleでクエリを実行するときのORDER BYのパフォーマンス

3年後、私たちのテーブルのレコードの量は非常に多くなり、クエリの応答時間が非常に悪く、顧客が不満を感じています。

だから、私はgot this URL for Oracle performance tuningを検索しました。

このURLの係数22は、応答時間が重要な場合にクエリでORDER BYを使用しないように指示します。したがって、クエリからORDER BYを省略すると、応答時間はORDER BYより半分以上になります。

しかし、お客様がソートする必要があるため、私はクエリからORDER BYを省略できません。

注文と応答時間を確保するために問題を解決するにはどうすればよいですか?

+0

にして最高のsulotionの1 ..と実行計画 – scaisEdge

+0

オラクルのパフォーマンスチューニング以外は何もしなくても、精密な生活を送るコンサルタントがいます。チューニングが問題であった場合や、そうでない場合は*すべてのケースでそうすることはできませんでした。このサイトで '[oracle] + [performance]'を検索すると、同じような助言をあなたに似たシーカに与えることができます。パフォーマンスとは、正確なクエリ、実際の実行計画、データのボリュームとスキュー、環境そのものに関するものです。そのような詳細がなければ、あなたの質問は答えられません。 – APC

+0

単に「ORDER BYを使用しない」と言っている人は、その点が欠けています。パフォーマンスチューニングは、クエリを最適化して、効率的に要件を満たすことです。残念なことに、パフォーマンスに関する質問への答えは、ほとんど常に「依存」です。あなたのハードウェアプロファイルとネットワークだけでなく、すべての@APCによると言います。だからパフォーマンス専門家がたくさんのお金を払っているのです。 – BriteSponge

答えて

0

要因の22の応答時間が重要であり、私は私のクエリから順を省略したときの応答時間が第1

よりも半分である このため、クエリ 内で順序を使用しないでください。このURLのTELLのを

インターネットでは、あなたが得るすべてのアドバイスについて常に質問する必要があります。

ORDER BY句を高速にするには、正しいインデックスを使用する必要があります。データベース索引を使用してソートが完了していることを確認し、フル・テーブル・スキャンまたは明示的ソート操作を行わないようにしてください。疑わしいときは、Markus Winand's Use the Index Luke siteでSQLパフォーマンスの問題を検索するか、SQL Performance Explained本を読んでください。

私の本「High-Performance Java Persistence」で説明したように、バッファプールが正しく構成され、データワーキングセットとインデックスを保持するのに十分なRAMがあることを確認する必要があります。

実際に膨大なデータ(たとえば数十億のレコード)がある場合は、パーティションを使用する必要があります。そうでなければ、数千億または数億のレコードのために、より多くのRAMを使用して垂直方向にスケールすることができます。

また、コンパクトデータ型を使用してください。たとえば、Enum序数を32ビットの整数値に格納しないでください。使用する可能性のあるすべてのEnum値を格納するのに十分な単一バイトが必要になるからです。

1

マルクスによるパイプライン化された順序を使用しているWinand自身のブログでmetion、それは細部はあなたの質問は、テーブルスキーマ,,クエリを追加更新する必要があり、このlink

関連する問題