sql >> Database >  >> RDS >> PostgreSQL

Waarom voert PostgreSQL een sequentiële scan uit op de geïndexeerde kolom?

Als de SELECT meer dan ongeveer 5-10% van alle rijen in de tabel retourneert, is een sequentiële scan veel sneller dan een indexscan.

Dit komt omdat een indexscan meerdere . vereist IO-bewerkingen voor elke rij (zoek de rij op in de index en haal de rij op uit de heap). Terwijl een sequentiële scan slechts één IO vereist voor elke rij - of zelfs minder omdat een blok (pagina) op de schijf meer dan één rij bevat, kan er dus meer dan één rij worden opgehaald met een enkele IO-bewerking.

Trouwens:dit geldt ook voor andere DBMS - sommige optimalisaties als "alleen index-scans" buiten beschouwing gelaten (maar voor een SELECT * is het hoogst onwaarschijnlijk dat zo'n DBMS voor een "alleen index-scan" zou gaan")



  1. Resultaten beperken in T-SQL

  2. Hoe vindt u de werknemer met het op één na hoogste salaris?

  3. Populaire Docker-afbeeldingen voor MySQL en MariaDB Server

  4. Voeg gegevens in 3 tabellen tegelijk in met Postgres