假设一个table有10字段,每个column假设100Bytes,也假设每笔ROW每个column都存满,每笔ROW存放的就是1000Bytes。
为了方便计算我们把它假设为每笔ROW 1KBytes。
假设这个table有一百万笔资料,整个table大小会接近 1GBytes 大小。
若没有Index的状况下,你的SQL Statement无论是否有 where 条件都会产生full table scan,也就是把整个table扫过一次。
select * from tableA
where ID in ('1234','2234','3234','4234')
;
执行一下以上的指令起码要读1GB的硬盘IO。
Index也可以把它看成是table,存放的是 ID字段值 与 tableA 的指针。
当我再执行一次以上的指令,最惨也顶多产生index full scan,取得四个ID的指针再到tableA把四笔ROW加载到内存后回馈给你。
效率比没有Index快10倍。
我想你去上一次数据库管理的课程,对于你写程式会有帮助,蛮多人写SQL Statement 不会考虑数据库效能的。