Middle+
203
Wanneer is een volledige scan van de dataset efficiënter dan indextoegang?
Antwoord van AI
sobes.tech AI
Wanneer het percentage records dat verwerkt moet worden hoog genoeg is (bijvoorbeeld meer dan 10-20%), zodat de kosten voor index zoeken en het lezen van individuele datablokken de voordelen overstijgen.
Andere gevallen:
- Ontbreken van een geschikte index: Als er geen index is die de filtervelden dekt of snellere toegang tot de gegevens biedt dan een volledige scan.
- Onevenwichtige gegevensverdeling (skew): Als het geïndexeerde veld een lage kardinaliteit heeft en het grootste deel van de gegevens geconcentreerd is op een klein aantal waarden, kan scannen sneller zijn dan het doorlopen van veel indexbladen met dezelfde waarden.
- Kleine dataset: Voor kleine tabellen kunnen de kosten voor het onderhouden en gebruiken van een index hoger zijn dan de voordelen.
- Sequentiële lezing: Een volledige scan vereist meestal een sequentiële lezing van de schijf, wat sneller kan zijn dan willekeurige lezing bij toegang via de index, vooral op HDD.
- Grote hoeveelheid gegevens in een rij: Als elke rij een grote hoeveelheid gegevens bevat, kan het efficiënter zijn om de volledige dataset in één keer te lezen dan meerdere keren toegang te krijgen tot de schijf om individuele rijen via de index te verkrijgen.
Voorbeeld waar een volledige scan efficiënter kan zijn:
// Eenvoudige SELECT * op een tabel met weinig rijen.
SELECT *
FROM small_table;
// Query met filter die de meeste rijen raakt
SELECT *
FROM large_table
WHERE status = 'processed'; // Als de meeste rijen de status 'processed' hebben