質問

この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の選択性が低い場合、計画は問題ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top