sql >> Databasteknik >  >> RDS >> Mysql

Är unika index bättre för kolumnsökningsresultat? (PGSQL &MySQL)

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:



  1. Att infoga nationella tecken i en oracle NCHAR eller NVARCHAR kolumn fungerar inte

  2. Oracle Database 20c Nya funktioner

  3. Vad gör pg_escape_string exakt?

  4. Anropa MySQL lagrad procedur med VB6 med OUT-parameter