Первый индекс не может сделать ничего, что не может сделать второй, поэтому вы должны отбросить первый индекс.
Единственное преимущество первого индекса перед вторым, когда речь идет о запросах, WHERE
(или ORDER BY
) предложение включает customer_id
только в том случае, если индекс меньше.Это делает сканирование диапазона по многим элементам индекса несколько быстрее.
Цена за дополнительный индекс с точки зрения размера и скорости изменения данных обычно перевешивает это преимущество.В хранилище данных только для чтения, где у меня есть запрос, который приносит значительную прибыль, у меня может возникнуть соблазн сохранить оба индекса, иначе я бы не стал.
Вы определенно должны не отбросить UNIQUE
index, потому что он имеет ценное применение, не имеющее ничего общего с производительностью: он не позволяет таблице содержать две строки, в которых есть значения сохранения для индексированных столбцов.Если это то, что вы хотите гарантировать, индекс UNIQUE
обеспечит поддержание ваших данных в хорошем состоянии.
Примечание: даже если эффект тот же, лучше, если в таблице естьуникальное ограничение (которое поддерживается уникальным индексом), чем просто наличие индекса.Если ничего другого, это лучше документирует цель.