1

我有这个 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的索引没有被使用(每个表都有它的索引)

我想更好地理解它,这样我就可以改善我在使用这个系统时遇到的一些性能问题。

谢谢。

4

2 回答 2

4

你觉得哪里不对劲?因为您没有任何条件(WHERE 子句),服务器会自然地读取一个表,即从第一行到最后一行。考虑到所服务的索引的选择性,决定从 c 读取并从 e 和 r 连接记录会更好。

于 2009-03-13T14:06:03.033 回答
0

我同意安德烈的观点。如果 convenio.idconvenio 的选择性较低,则该计划很好。

于 2009-03-13T14:41:58.830 回答