質問
このSQLがあります:
SELECT
*
FROM
Requisicao r
join convenio c on c.idconvenio = r.idconvenio
join empresa e on e.idempresa = c.idempresa
実行すると、次の実行計画が得られます。
PLAN JOIN (C NATURAL,E INDEX (INTEG_160),R INDEX (INTEG_318))
Convenioのインデックスは使用されなかったことを意味します(すべてのテーブルにインデックスがあります)
このシステムで発生しているパフォーマンスの問題を改善できるように、少し詳しく理解したいと思います。
ありがとう。
解決
あなたにとって何が悪いと思われますか?条件(WHERE句)がないため、サーバーは1つのテーブル、つまり最初の行から最後の行までを自然に読み取ります。インデックスの選択性を考慮して、cから読み取り、eとrのレコードを結合する方が良いと判断しました。
他のヒント
私はアンドレイに同意します。 convenio.idconvenioの選択性が低い場合、計画は問題ありません。
所属していません StackOverflow