我有这个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的索引(每个表都有索引)
我想更好地理解它,以便我可以改善我在这个系统中遇到的一些性能问题。
感谢。
答案 0 :(得分:4)
你觉得怎么了?因为你没有任何条件(WHERE子句)服务器会自然地读取一个表,即从第一行到最后一行。考虑到索引的选择性,决定从c读取并加入来自e和r的记录会更好。
答案 1 :(得分:0)
我同意安德烈的观点。如果convenio.idconvenio的选择性很低,那么计划就可以了。