Náklady na I/O operace se mezi prohledáváním indexů a prohledáváním tabulek liší několika způsoby:
Indexové skenování
1. Cena I/O operací: Indexové skenování je obecně efektivnější z hlediska I/O operací. Potřebují pouze číst index, který je obvykle menší než celá tabulka, což má za následek méně přístupů na disk.
2. Cena I/O: Cena I/O pro skenování indexu je obvykle nižší, protože index je kompaktnější a lze jej číst rychleji.
3. Náklady na CPU: Náklady na CPU pro skenování indexu jsou obvykle nižší, protože index je lépe organizovaný a lze jej prohledávat efektivněji.
4. Celkové náklady na operátora: Celkové náklady na operátora na skenování indexu jsou obvykle nižší, protože zahrnují náklady na I/O a CPU.
Skenování stolu
1. Cena I/O operací: Skenování tabulek je obecně méně efektivní z hlediska I/O operací. Potřebují číst celou tabulku, což může mít za následek více přístupů na disk.
2. Cena I/O: Cena I/O pro skenování tabulky je obvykle vyšší, protože tabulka je větší a vyžaduje více přístupů na disk.
3. Cena CPU: Cena CPU pro skenování tabulky je obvykle vyšší, protože tabulka je větší a vyžaduje více zpracování.
4. Celkové náklady na operátora: Celkové náklady na operátora na skenování tabulky jsou obvykle vyšší, protože zahrnují náklady na vstup/výstup a CPU.
Závěr
Stručně řečeno, prohledávání indexů je obecně efektivnější z hlediska I/O operací a využití procesoru ve srovnání s prohledáváním tabulek. Výběr mezi těmito dvěma však závisí na konkrétních požadavcích a omezeních dotazu a databáze.
Citace:[1] https://www.ibm.com/docs/en/db2/11.5?topic=methods-data-access-through-index-scans
[2] https://stackoverflow.com/questions/8702905/table-scan-and-index-scan-in-sql
[3] https://dba.stackexchange.com/questions/250474/shouldnt-operator-cost-at-least-be-as-large-as-i-o-or-cpu-cost-that-comprises-i
[4] https://forums.oracle.com/ords/r/apexds/community/q?question=cost-of-a-full-table-scan-is-less-than-an-index-unique-scan -1453
[5] http://venkatsqlinterview.blogspot.com/2011/05/difference-between-index-scan-and-index.html