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