Indeksit ovat eräänlaisia hakemistoja sarakkeille. SQL:ssä voidaan tietoja hakea ja järjestää minkä tahansa sarakkeiden mukaan. Indeksien määrityksellä voidaan huomattavasti nopeuttaa hakutoimintoja, jos määrittelemme indeksit koskemaan sellaisia kenttiä, joita käytetään usein hakuehtoina tai joiden mukaan hakutuloksia järjestetään. Indeksejä voi perustaa tai poistaa milloin tahansa ilman, että tietokantaa käyttäviä ohjelmia pitää mitenkään muuttaa.
Useimmat tietokantaohjelmistot muodostavat yksilöivän indeksin (engl. UNIQUE INDEX) automaattisesti perusavaimen yhteyteen. Samoin luodaan omat indeksit viiteavaimille nopeuttamaan liitosten muodostamista. [Hovi, sivu 112] Indeksi on kuin kirjan hakemisto, joten se on järjestetty ja siitä on suorat viittaukset oikealle kohdalle dataan. Taulun rivit sen sijaan ovat epäjärjestyksessä. Joistakin tietokannanhallintajärjestelmistä löytyy myös ryvästävä indeksi (engl. clustered index), joka järjestää myös taulun rivit indeksin mukaan. Tietenkin voi olla olemassa vain yksi ryvästävä indeksi yhtä taulua kohti. Indeksi määritellään CREATE INDEX -komennolla jossa sille voidaan antaa oma koko tietokannan sisällä pätevä yksilöllinen nimi. Lisäämällä sana UNIQUE heti CREATE-sanan jälkeen saadaan luotua yksilöivä indeksi. Indeksi voidaan poistaa DROP INDEX -komennolla, jolle kerrotaan minkä niminen indeksi halutaan poistaa.
/* Luodaan indeksi Oppilaat-taulun sukunimi-kentälle */
CREATE INDEX Oppilaat_sukunimi ON Oppilaat(sukunimi)
/* luodaan yksilöivä indeksi Oppilaat-taulun sotu-kentälle */
CREATE UNIQUE INDEX Oppilaat_sotu ON Oppilaat(sotu)
/* Poistetaan yllä määritelty sukunimi-kentän indeksi */
DROP INDEX Oppilaat_sukunimi