Мне любопытно,
CREATE INDEX idx ON tbl (columns);
vs.
CREATE UNIQUE INDEX idx ON tbl (columns);
имеет значительный алгоритмический выигрыш в производительности в реализациях PostgreSQL или MySQL при сканировании индексированных столбцов, или если ключевое слово UNIQUE просто вводит уникальное ограничение рядом с индексом.
Я предполагаю, что будет справедливо сказать, что существует незначительное преимущество, поскольку индексы, вероятно, будут внутренне реализованы как некая структура, похожая на хэш1, а обработка коллизий по определению приводит к чему-то другому, чем O(1) производительность. Учитывая эту предпосылку, вполне вероятно, что если большой процент значений совпадает, то структура вырождается во что-то линейное.
Итак, для целей моего вопроса предположим, что распределение значений относительно дискретно и равномерно.
Заранее спасибо!
1 Для меня это чисто предположение, поскольку я не знаком с внутренним устройством RDBM.