Индекс работает, позволяя базе данных организовывать данные вокруг набора столбцов. Я признаю, что не уверен на 100% в технической реализации этого, но он создает структуру данных, используя значения и сопоставляя их с идентификатором объекта для каждой строки в таблице. (Если я не прав в этом, кто-то поправит меня, хотя это не должно повлиять на ценность моего ответа в целом)
Вы пытаетесь создать индекс для всего, что вы будете часто искать, чтобы ускорить его. Имея индекс на partNum
, вы можете найти что-нибудь на partNum
очень быстро. индекс на partId, partNum
, тем не менее, позволил бы очень быстро выполнять поиск в таблице, где необходимо сопоставить оба столбца.
Рассмотрим следующее:
SELECT *
FROM MyTable
WHERE partId = 2
AND partNum = 7
Это будет использовать IDX_PART_ID_PART_NUM
для поиска, используя оба значения для сканирования индекса, а не просто IDX_PART_NUM
. Это все равно будет быстрее, чем если бы у вас был индекс для обоих столбцов по отдельности.
По сути, он позволяет индексировать значения обоих столбцов вместе, поэтому для каждого значения одного он будет знать допустимые значения другого, и ему не нужно будет делать 2 поиска для каждого запроса, когда он можно сделать один.
Чтобы ответить на вопрос, если вы часто запрашиваете оба столбца, сохраните составной индекс.