Но есть ещё один компромисс - индекс на выражение, например: CREATE UNIQUE INDEX first8bytes ON foo( lower(substring(name, 1, 8)) ); При этом размер индекса будет сравним с индексом на столбец типа bigint, а индексация будет в 8 раз глубже.
PS. Здесь UNIQUE бессмысленно. Если name уникально, то должен быть отдельный уникальный индекс на этот столбец!