背景:每張數據表約80W條,按照日期生成,對應用戶在遊戲中的各類操作。
常規的優化方式
1. 根據常用檢索字段建立索引
按照實際測試,不加其餘任何操作,未建立索引的情況下,80W條數據,select語句耗時0.3-0.5s左右,建立索引後並未有很大提升(也許是數據總量依然過低),平均耗時只能降低0.0Xs。
2.根據需求儘量精確查詢字段、並儘量多的加入條件語句
根據實際測試,未建立索引的情況下,select *,比select id,基本耗時會增加0.1-2s,where條件越精確,過濾越多,查詢越快。
實用的方式
1.儘量採用程序內置函數去操作結果,數據庫只做基本的檢索
項目中因爲用到了非常多的連接甚至跨表查詢,按照實際測試情況,一條能符合我們需求的sql語句,檢索時間是5-6s….未加索引,加索引並沒有很大的差別。但是若採用php內置數組函數去合併、交集、差集、過濾、去重等,等待時間則可以縮短至2-3s,提升50%。
2.對於連續的過濾條件,例如檢索字段插入時間從3月1日-3月15日的數據,使用between而非大於、小於
實際測試,同樣的數據量,大於、小於要比between慢50%以上。
3.如果對於時效性沒有嚴格的要求,可以開啓mysql配置文件中的查詢緩存
去除忘了消耗,除第一次外,之後全部相同的檢索耗時0s。