Indeksit yleisiä kyselyitä varten
Lisätkää indeksit useimmin suoritettaville kyselyille: käyttäjän, päivämäärän ja viiteavaimen mukaan, ja mitatkaa vaikutus EXPLAINilla.
Indeksit yleisiä kyselyitä varten on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on indeksi?
Indeksi on erillinen levyllä sijaitseva tietorakenne, jonka avulla tietokanta voi etsiä rivejä sarakearvon perusteella ilman koko taulun läpikäyntiä. Perinteinen toteutus on B-puu.
Indeksit vaihtavat kirjoitussuorituskykyä lukusuorituskykyyn
Jokainen indeksi hidastaa INSERT-, UPDATE- ja DELETE-toimintoja hieman, koska myös indeksi on päivitettävä. Älkää lisätkö tarpeettomia indeksejä.
Perusavaimet saavat indeksin automaattisesti
PRIMARY KEY luo automaattisesti yksikäsitteisen B-puuindeksin. Sama koskee UNIQUE-sarakkeita.
Indeksoikaa vierasavainsarakkeet
PostgreSQL EI indeksoi vierasavaimen lapsipuolta automaattisesti. Lisätkää indeksi aina — ilman sitä ylärivin poistaminen käy läpi kaikki alirivit:
CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);Indeksoikaa WHERE-lauseissa käytettävät sarakkeet
Jos suodatatte usein sarakkeen created_at perusteella, indeksoikaa se:
CREATE INDEX posts_created_at_idx ON posts(created_at DESC);
-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;Yhdistelmäindeksit
Usean sarakkeen suodatuksessa yhdistelmäindeksi voi olla huomattavasti nopeampi kuin kaksi yksittäistä indeksiä:
CREATE INDEX posts_author_published_idx
ON posts(author_id, published_at DESC);
-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;Vasemman etuliitteen sääntö
Yhdistelmäindeksi (a, b, c) voi palvella kyselyitä WHERE a = ? ja WHERE a = ? AND b = ? — mutta EI kyselyä WHERE b = ? yksinään. Järjestyksellä on merkitystä.
Osittaiset indeksit
Indeksoikaa vain rivit, joita kyselyissä käytetään:
-- Only published posts:
CREATE INDEX posts_published_idx
ON posts(published_at DESC)
WHERE published_at IS NOT NULL;
-- Smaller index, faster lookups for the common case.Lausekeindeksit
Indeksoikaa sarakkeesta laskettava funktion arvo:
CREATE INDEX users_email_lower_idx ON users(LOWER(email));
-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);Älkää indeksoiko liikaa
Nyrkkisäännöt:
- Indeksoikaa PK ✓ (automaattisesti)
- Indeksoikaa UNIQUE-sarakkeet ✓ (automaattisesti)
- Indeksoikaa vierasavainsarakkeet ✓
- Indeksoikaa sarakkeet, joita käytetään tärkeimpien kyselyiden WHERE-, JOIN- tai ORDER BY -lauseissa
- Älkää indeksoiko sarakkeita, joiden selektiivisyys on erittäin pieni (esimerkiksi boolean-saraketta, jonka arvot jakautuvat suhteessa 50/50)
Mitatkaa EXPLAIN-toiminnolla
Suorittakaa EXPLAIN ANALYZE ennen indeksin lisäämistä ja sen jälkeen varmistaaksenne, että kyselysuunnittelija käyttää sitä:
EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;Kertaus
Blogissamme indeksoikaa vierasavaimet (post_id kommenteissa sekä author_id julkaisuissa ja kommenteissa) ja (author_id, published_at DESC) julkaisuissa käyttäjän uusimpia julkaisuja hakevia kyselyitä varten.
Pikatarkistus
Lisäsitte vierasavaimen orders.user_id REFERENCES users(id). Minkä indeksin, jos minkään, luotte?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”Indeksit yleisiä kyselyitä varten” ilmainen?
Kyllä – oppitunnin ”Indeksit yleisiä kyselyitä varten” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Indeksit yleisiä kyselyitä varten”?
Lisätkää indeksit useimmin suoritettaville kyselyille: käyttäjän, päivämäärän ja viiteavaimen mukaan, ja mitatkaa vaikutus EXPLAINilla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Indeksit yleisiä kyselyitä varten”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Blogin mallintaminen: käyttäjät, julkaisut, kommentit
- Avainten ja tietotyyppien valinta
- Indeksit yleisiä kyselyitä varten
- Tietokannan alustaminen testidatalla