I/O operāciju izmaksas starp indeksa skenēšanu un tabulas skenēšanu būtiski atšķiras attiecībā uz datu piekļuvi, lasīto lapu skaits un efektivitāte, pamatojoties uz vaicājumu selektivitāti un datu organizāciju.
Indeksa skenēšana ietver piekļuvi datiem, šķērsojot indeksa struktūru (bieži B-koku). Šeit galvenokārt ietilpst divas sastāvdaļas: indeksa lapu piekļuves izmaksas un atbilstošo tabulas lapu atrašanas izmaksas. Indeksa lapām parasti ir pieejamās piekļuves modeļi, jo indeksa lapu mezgli diskā var nebūt fiziski blakus, izraisot nejaušas I/O operācijas. Katram loģiskam pakāpei indeksa kokam no saknes līdz lapai ir nepieciešams lasīt lapas, un šīs izmaksas tiek aprēķinātas, izmantojot sistēmas izlases lapas izmaksu parametru. Pēc attiecīgo rindu indeksa ierakstu atrašanas sistēma iegūst atbilstošās tabulas datu lapas. Šādu datu lapas skaits ir atkarīgs no vaicājuma selektivitātes un fiziskās korelācijas starp saglabātajiem datiem un indeksa secību (pazīstama kā korelācija). Augsta korelācija nozīmē, ka indeksa ieraksti Rindas atrašanās vietas cieši atbilst fizisko datu secībai, samazinot nejaušo I/O un padarot indeksa skenēšanu efektīvāku. No otras puses, zema korelācija noved pie daudziem nejaušiem ielādēm, ievērojami palielinot I/O izmaksas.
CPU izmaksas indeksa skenēšanā ietver katras atsevišķās iegūtās rindas apstrādi, bet galvenā problēma ir I/O. Pastāv arī redzamības aspekts: ja datu bāzei ir redzamības kartes izsekošana, kuras datu lapas ir pilnībā redzamas visiem darījumiem, sistēma dažreiz var pilnībā izlaist noteiktas lapas tikai indeksa skenēšanas laikā, krasi samazinot I/O izmaksas.
Turpretī tabulas skenēšana vai pilna galda skenēšana darbojas, izlasot visas datu lapas secīgi no tabulas. I/O šeit galvenokārt ir secīgs, kas mēdz būt ātrāks nekā nejaušs I/O vērpšanas diskos vai mazāk sodīts par SSD. Pilna galda skenēšanas izmaksas ir salīdzinoši nemainīgas, jo tā nolasa visu tabulu neatkarīgi no rindu skaita, kas atbilst vaicājumam. Šīs izmaksas ir atkarīgas no kopējā tabulas lapu skaita, nevis no izvēlēto rindu skaita. Pilna galda skenēšana negūst labumu no selektivitātes; Viņiem ir jāizlasa katra lapa, pat ja vaicājums filtrē rindas. Tomēr ar modernām uzglabāšanas tehnoloģijām un tādām optimizācijām kā vairāku bloku nolasījumi, paralēli nolasījumi un glabāšanas slāņa izkraušana, pilna galda skenēšanas izmaksas var būt konkurētspējīgas vai pat mazāk nekā indeksa skenējumi vaicājumiem, kas iegūst ievērojamu tabulas daļu.
Uz izmaksām balstītais optimizētājs (CBO) nolemj starp indeksa skenēšanas izmantošanu un pilnu tabulas skenēšanu, pamatojoties uz aprēķinātajām izmaksām. Ļoti selektīviem vaicājumiem, kur tikai nelielai daļai rindu ir jāiegūst indeksa skenēšana parasti ir zemākas I/O izmaksas, jo tiek atnestas mazāk galda lapu. Palielinoties selektivitātes slieksnim (nepieciešamās rindas), indeksa skenēšanas I/O izmaksas palielinās, jo lielāks nejaušo lapu atnākšanas un indeksa šķērsošanas dēļ pārsniedza pilna galda skenēšanas izmaksas. Šajā brīdī CBO veicina tabulas skenēšanu, jo secīgās I/O izmaksas ir mazākas par daudzu indeksu meklēšanas nejaušo I/O slogu.
Vēl viens svarīgs faktors, kas ietekmē I/O izmaksu starpību, ir "klasterizācijas koeficients" vai rindu, kas atbilst indeksa taustiņiem, fiziskā klasterizācija. Zemāks klasterizācijas koeficients (labāka klasterizācija) nozīmē, ka rindas, kurām piekļūst caur indeksu, atrodas netālu no otra fiziski, samazinot nejaušu I/O un uzlabojot indeksa skenēšanas efektivitāti. Augstāks klasterizācijas koeficients noved pie nejaušas I/O indeksa skenēšanas laikā un samazina tā ieguvumu, salīdzinot ar tabulas skenēšanu.
Mūsdienu datu bāzu sistēmas var arī ieviest paralēlu skenēšanu gan indeksu, gan pilnu tabulas skenēšanu, kur I/O un CPU resursi tiek dalīti starp vairākiem darbiniekiem, kas var samazināt kopējo vaicājuma laiku. Tomēr I/O būtiskais raksturs indeksa skenēšanai (nejauša lappuses piekļuve) salīdzinājumā ar tabulas skenēšanu (galvenokārt secīgu lapu piekļuvi) joprojām ir galvenā diferenciālis.
Apkopot galvenos punktus par I/O izmaksu atšķirībām:
- Indeksa skenēšana rodas I/O izmaksas no lasīšanas indeksa lapām (pieejama piekļuve), kā arī atbilstošu datu lapu iegūšana (potenciāli pieejama piekļuve). Izmaksas ir jutīgas pret selektivitāti, korelāciju un klasterizācijas koeficientu.
- Pilns galda skenēšana veic secīgu I/O, nolasot visas lapas, ar salīdzinoši stabilām I/O izmaksām neatkarīgi no selektivitātes.
- Indeksa skenēšana var pārspēt, ja jautājumi ir vērsti uz mazām datu apakšgrupām, bet cieš no nejaušām I/O pieskaitāmām izmaksām, palielinoties selektivitātei.
- Pilna galda skenēšana var būt efektīvāka, ja lielai tabulas daļai ir nepieciešama piekļuve efektīva secīga I/O dēļ.
- Redzamības kartes un tikai indeksa skenēšana dažos indeksa skenēšanas gadījumos var samazināt I/O izmaksas, izvairoties no datu lapas nolasīšanas.
- Paralēlisms var uzlabot abus skenēšanas veidus, bet nemaina pamata I/O īpašības.
- Optimizators līdzsvaro šos izmaksu faktorus, lai izvēlētos visefektīvāko metodi, pamatojoties uz vaicājuma un datu raksturlielumiem.