2015-10-06 2 views
-2

Я новичок в SQL, если я использую этот запрос часто:Создание индекса для таблицы с несколькими столбцами

SELECT * FROM student WHERE key1=? AND key2=? 

Я хочу, чтобы создать индекс на student, что главное различие между этими двумя ниже?

CREATE INDEX idx_key1 on student (key1); 
CREATE INDEX idx_key2 on student (key2); 

и

CREATE INDEX idx_keys on student (key1, key2); 

Спасибо!

+0

Взгляните на это http://stackoverflow.com/questions/19599773/oracle-single-multicolumn-index-or-two-single-column-indexes – jarlh

+0

Это также может помочь: http: //www.techrepublic .com/статьи/индекс-на-множественных колонок-для-SQL-производительность / – MusicLovingIndianGirl

ответ

1

Второй (CREATE INDEX idx_keys on student (key1, key2)) возвращает все строки, которые вам нужны, в одном поиске индекса (чтобы найти строки) + поиск ключей для получения столбцов.

Если вы создаете 2 одноколоночных индекса, только один из них может использоваться для поиска индекса. Затем для каждой возвращаемой строки вам нужен ключевой поиск, чтобы получить другой ключ и фильтровать результаты. Или механизм БД просто решит, что быстрее просто выполнить сканирование таблицы и фильтр.

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

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