No momento, tenho um banco de dados postgresql 8.4 configurado para jogadores em um jogo multijogador. Eu quero que a coluna de nome de usuário seja única. Eu também quero ser capaz de procurar um jogador pelo nome de usuário rapidamente. Aqui está a saída de \d players
:
Table "public.players"
Column | Type | Modifiers
------------+---------+------------------------------------------------------
id | bigint | not null default nextval('players_id_seq'::regclass)
username | text | not null
trophies | integer |
Indexes:
"pk_id" PRIMARY KEY, btree (id)
"players_username_key" UNIQUE, btree (username)
"players_trophies_index" btree (trophies DESC NULLS LAST)
"players_username_index" btree (username)
Eu não sou um DBA, então tenha paciência comigo. Isso parece um uso ineficiente do espaço em disco por ter dois índices na coluna de nome de usuário: um para exclusividade e outro para pesquisa rápida. É possível combiná-los em um índice, mantendo exclusividade e pesquisa rápida? Em caso afirmativo, há alguma desvantagem em tal abordagem?