I/O 操作のコストは、インデックス スキャンとテーブル スキャンではいくつかの点で異なります。
インデックススキャン
1. I/O 操作のコスト: I/O 操作の点では、一般にインデックス スキャンの方が効率的です。インデックスを読み取るだけで済みますが、インデックスは通常テーブル全体よりも小さいため、ディスク アクセスが少なくなります。
2. I/O コスト: インデックスはよりコンパクトで、より迅速に読み取ることができるため、インデックス スキャンの I/O コストは通常より低くなります。
3. CPU コスト: インデックスがより整理され、より効率的に検索できるため、インデックス スキャンの CPU コストは通常より低くなります。
4. オペレーターの合計コスト: インデックス スキャンのオペレーターの合計コストは、I/O コストと CPU コストが含まれるため、通常は低くなります。
テーブルスキャン
1. I/O 操作のコスト: テーブル スキャンは、一般に I/O 操作の効率が低くなります。テーブル全体を読み取る必要があるため、ディスク アクセスが増加する可能性があります。
2. I/O コスト: テーブルが大きくなり、より多くのディスク アクセスが必要になるため、テーブル スキャンの I/O コストは通常より高くなります。
3. CPU コスト: テーブルが大きくなり、より多くの処理が必要となるため、テーブル スキャンの CPU コストは通常より高くなります。
4. オペレーターの合計コスト: テーブル スキャンのオペレーターの合計コストは、I/O コストと CPU コストが含まれるため、通常より高くなります。
### 結論
要約すると、インデックス スキャンは、テーブル スキャンと比較して、I/O 操作と CPU 使用率の点で一般に効率的です。ただし、この 2 つのどちらを選択するかは、クエリとデータベースの特定の要件と制約によって異なります。
引用:[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