生産はSQL事業は3つだけのフィールドを持つ非常に単純な、単一テーブルのクエリやテーブルで、プライマリキーIDがあり、今日の問題が発生し、主キーIDを介して濾過し、ビジネスIDのページでは、以上の百の呼び出しを渡します、このテーブルのデータをSQLを来ましたボリュームサイズは1億人以上であるが、これは完全にビジネスが使用できない影響を与え、15秒を実行するために、SQLの実行に発生します。
(1111,222,333,444,555 ..........)におけるT t.idから、B、Cを選択します
私は、テーブルデザインを表示するために開始しますが、直接実行計画を読んでいません、
1セッションセットSTATISTICS_LEVEL =全てを変えます。
2执行SQL
テーブルからSELECT * 3(dbms_xplan.display_cursor(NULL、NULL、 'ALLSTATS LAST')
実施計画は、全表スキャンに直接移動することはなく、フィルタリング述語の情報の束があります
TO_NUMBER(t.id)= 1111またはTO_NUMBER(t.id)= 2222 ..............
ここを参照してください特定の問題を推測するために飛んだ、クエリTテーブルのIDフィールドは、SQL直接暗黙の型変換した後、インデックスが、歩けないだろうテーブル全体に直接行くデジタルタイプでVARCHAR2タイプ、およびSQLです。フォローアップが検出されましたが、また、ビジネスは、テーブルのデータを上昇した後、パフォーマンスの問題だけで放り出されたますます顕著になって、気にしないので、
ます。https://blog.51cto.com/2012ivan/2410375で再現