2017-12-12 1 views
0

テーブルには約700,000のデータが含まれています。クエリをより高速に実行する方法はありますか?Select * from table_nameが遅いです。

この表はサーバーに格納されています。

特定の列を使用してクエリを実行しようとしました。

+2

テーブルにインデックスがありますか?フィルタを使用していますか?クエリの複雑さは何ですか? – Zorkind

+1

実行している実際のクエリは何ですか?テーブルはどれくらい大きいですか? 「遅い」とはどういう意味ですか?それはどのくらいかかりますか? –

+2

テーブルには7リットルのデータがありますか? (Lakhはインド以外では使用されておらず、周辺国で使用されていないユニットです) – Mat

答えて

0

select * from table_nameが異常に遅い場合は、これらの事をチェック:

  1. ネットワーク速度を。データの量とネットワークの速度はどれくらいですか?大規模なクエリの場合は、データを行ではなくバイトで考えることができます。 select bytes/1024/1024/1024 gb from dba_segments where segment_name = 'TABLE_NAME';を実行して、ネットワークの速度と比較してください。
  2. ローフェッチサイズ。アプリケーションまたはIDEが1行ずつフェッチしている場合、各行はネットワーク遅延を伴う大きなオーバーヘッドを持ちます。その設定を増やす必要があるかもしれません。
  3. 空のセグメント。いくつかの奇妙なケースでは、テーブルのセグメントサイズが増加し、縮小することはありません。たとえば、テーブルに何十億もの行があり、削除されたが切り捨てられていない場合、その領域は解放されませんでした。その後、select * from table_nameは、実際のデータに到達するために、多くの空のエクステントを読み取る必要があります。上記のクエリのGBサイズが大きすぎると思われる場合は、alter table table_name move;を実行してテーブルを再構築し、保存スペースを確保してください。
  4. 再帰的クエリ。シンプルなクエリでは、ほとんど実行計画が悪くない可能性があります。可能性はありますが、再帰的な問合せでは実行率が悪い可能性があります。クエリが実行されている間は、select * from gv$sql where users_executing > 0;を参照してください。実際には遅く、チューニングする必要があるデータ・ディクショナリ問合せが存在する可能性があります。
関連する問題