Question

J'ai ce SQL:

SELECT
  *
FROM
  Requisicao r
  join convenio c on c.idconvenio = r.idconvenio
  join empresa e on e.idempresa = c.idempresa

Lorsque je l'exécute, je reçois ce plan d'exécution:

PLAN JOIN (C NATURAL,E INDEX (INTEG_160),R INDEX (INTEG_318))

Ce qui signifie que l'index de Convenio n'a pas été utilisé (chaque table a ses index)

J'aimerais comprendre un peu mieux le problème afin d'améliorer certains problèmes de performances de ce système.

Merci.

Était-ce utile?

La solution

Qu'est-ce qui ne va pas pour vous? Parce que vous n’avez aucune condition (clause WHERE), le serveur lira naturellement une table, c’est-à-dire de la toute première ligne à la dernière. Compte tenu de la sélectivité d’index, servi, il a été décidé qu’il serait préférable de lire c et de joindre les enregistrements de e et r.

Autres conseils

Je suis d'accord avec Andrei. Si convenio.idconvenio a une faible sélectivité, le plan est bon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top