暗黙的な変換のためにOracleテーブルのフィールドタイプ、およびSQL不合理なビジネス、

生産は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で再現

おすすめ

転載: blog.csdn.net/weixin_34143774/article/details/92837889