Re: [讨论] 资料量大的时候要怎么优化db & sql?

楼主: wen001 (专长就数据库阿,奇怪吗?)   2015-01-11 23:18:42
假设一个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 不会考虑数据库效能的。
作者: iamnotfat (我不肥)   2015-01-12 17:49:00
善用数据库的partition table可以减少disk/ index 的overhead

Links booklink

Contact Us: admin [ a t ] ucptt.com