Om din data är unik bör du skapa en UNIQUE index på dem.
Detta innebär ingen extra omkostnad och påverkar optimerarens beslut i vissa fall så att den kan välja en bättre algoritm.
I SQL Server och i PostgreSQL , till exempel om du sorterar på en UNIQUE nyckel ignorerar optimeraren ORDER BY klausuler som används efter det (eftersom de är irrelevanta), dvs. e. denna fråga:
SELECT *
FROM mytable
ORDER BY
col_unique, other_col
LIMIT 10
kommer att använda ett index på col_unique och sorterar inte på other_col eftersom det är värdelöst.
Denna fråga:
SELECT *
FROM mytable
WHERE mycol IN
(
SELECT othercol
FROM othertable
)
kommer också att konverteras till en INNER JOIN (i motsats till en SEMI JOIN ) om det finns en UNIQUE index på othertable.othercol .
Ett index innehåller alltid någon form av en pekare till raden (ctid i PostgreSQL , radpekare i MyISAM , primärnyckel/uniquiifier i InnoDB ) och bladen är ordnade på dessa pekare, så i själva verket är varje indexblad unikt på något sätt (även om det kanske inte är uppenbart).
Se den här artikeln i min blogg för information om prestanda: