最近遇到個(gè)小坑,《數(shù)據(jù)庫表不斷插入新數(shù)據(jù)衷戈,但是讀表操作卻越來越慢》帽驯。
原因:
之前的表結(jié)構(gòu)中沒有加入所需條件的索引字段同眯,這樣每次查詢表的時(shí)候都是全表掃描;
EXPLAIN SELECT * FROM api_performance WHERE time_stamp='1500899762.0' ORDER BY id DESC ;
結(jié)果
通過這條sql可以發(fā)現(xiàn),在沒建立索引的時(shí)候,執(zhí)行sql需要遍歷18075行數(shù)據(jù);執(zhí)行時(shí)間為:275ms
解決
在數(shù)據(jù)庫表中建立索引字段:time_stamp,然后在執(zhí)行sql呻澜;
EXPLAIN SELECT * FROM api_performance WHERE time_stamp='1500899762.0' ORDER BY id DESC ;
結(jié)果
通過結(jié)果可以發(fā)現(xiàn)這時(shí)候只需要表里7行數(shù)據(jù)就能查出我所要的值了;執(zhí)行時(shí)間20ms惨险;
總結(jié)
就是一個(gè)簡(jiǎn)單的索引羹幸,竟然讓查詢速度呈現(xiàn)指數(shù)級(jí)的增長(zhǎng),果然厲害辫愉,看來數(shù)據(jù)庫的水還是很深的栅受。。恭朗。
@晴天-2017-08-17 11:14:55