Итак, здесь я смотрю на этот огромный стол из оракула 10 г. Я посмотрел на его индексы и увидел, что ВСЕ столбцы находятся под одним уникальным индексом. Предоставляет ли это фактическое предоставление каких-либо преимуществ по эффективности?Уникальный указатель на каждый столбец
ответ
Возможно, возможно, нет. Возможно, что уникальный индекс реализует ограничение, гарантирующее, что строки действительно уникальны и не предназначены для того, чтобы вообще помочь в производительности. Для индексированных запросов поиска может быть преимущество в производительности, поскольку им вообще не нужно будет обращаться к фактической таблице.
На первый взгляд кажется, что это должно было быть создано как ИНДЕКС ОРГАНИЗОВАННЫЙ стол.
+1 для указания основной причины, по которой у нас есть уникальные индексы - чтобы обеспечить уникальность (кто догадался). Кроме того, да, это должно быть ИНДЕКС ОРГАНИЗОВАНО, чтобы уменьшить количество хранимых данных (и тем самым улучшить производительность DML). –
С точки зрения производительности я бы сказал, что наличие всех полей в одном индексе (уникальном или нет) составляет вообще Неплохая идея.
- Любое обновление таблицы приведет к обновлению этого индекса. В «нормальной» таблице (слово normal используется очень свободно), будут некоторые поля, не индексированные. Если одно из этих полей обновляется, то оно более эффективно, потому что ни один индекс не нуждается в обновлении.
- Описанный индекс несколько ограничен в оптимизации запросов. Например, предположим, что в таблице есть поля a, b, c, d и e и что индекс определен с полями в этом порядке. Любой запрос, который не ссылается на
a
в предложении WHERE, не может использовать этот индекс. - В зависимости от количества и размера соответствующих полей такой индекс может иметь очень большие ключи. С более крупными ключами это означает, что на каждой странице может храниться меньше ключей, поэтому обновление индекса означает, что будет задействовано большее число просмотров и записи страниц.
Сколько столбцов есть? –