2009-03-13 1 views
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 не использовался (каждый таблица имеет свои индексы)

Я хотел бы понять это немного лучше, поэтому я могу улучшить некоторые проблемы с производительностью, которые у меня возникают с этой системой.

Спасибо.

ответ

3

Что вам не подходит? Поскольку у вас нет каких-либо условий (предложение WHERE), сервер будет читать одну таблицу естественно, то есть от самой первой строки до последней. Принимая во внимание избирательность избирателя, было принято решение, что было бы лучше читать из c и присоединять записи от e и r.

0

Я согласен с Андреем. Если convio.idconvenio имеет низкую избирательность, план в порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^