sqlite性能优化
1、數(shù)據(jù)庫性能上
1.1 批量事務插入,提升數(shù)據(jù)插入的性能
由于sqlite默認每次插入都是事務,需要對文件進行讀寫,那么減少事務次數(shù)就能簡書磁盤讀寫次數(shù)從而獲得性能提升。
1.2 單條sql優(yōu)于多條sql
實測發(fā)現(xiàn),對于幾十條sql插入當你替換成單條sql時性能有所提升,但是這里要注意的是,換成單條可讀性較差,同時會出現(xiàn)sql超長的錯誤。
1.3 讀和寫操作是互斥的,寫操作過程中可以休眠讓讀操作進行
由于第一步所說的多數(shù)據(jù)事務插入,從而會導致插入時間增長那么也會影響數(shù)據(jù)展示的速度,所以可以在插入過程中休眠操作,以便給讀操作流出時間展示數(shù)據(jù)。
1.4 使用索引
適當?shù)乃饕暮锰幨亲屪x取變快,當然帶來的影響就是數(shù)據(jù)插入修改的時間增加,因為還得維護索引的變化。不過對于大部分的讀操作多于寫操作的數(shù)據(jù)庫來說索引還是十分有必要的。關于如何設計索引,可以參考下面這個文章:
索引優(yōu)化
1.5 使用聯(lián)合索引
過多的索引同時也會減慢讀取的速度,很典型的一個情況就是比如要同時根據(jù)省市區(qū)縣查詢,又可以根據(jù)年月日查詢,如果每個都做索引那么讀取速度將會顯著降低。
對于這種有層級關系的關鍵字,就可以考慮聯(lián)合索引了,比如首先根據(jù)省查詢,然后根據(jù)省市查詢,層層遞進到省市區(qū)縣的查詢方式,就可以使用聯(lián)合索引,效果非常好。
1.6 勿使用過多索引
1.7 增加查詢條件
當你只要一條數(shù)據(jù)時增加limit 1,這樣搜索到了后面的就不會再查詢了,大大的加快了速度
1.8 提前將字段的index映射好
減少getColumnIndex的時間,可以縮短一半的時間
2、數(shù)據(jù)庫設計上
2.1 通過冗余換取查詢速度
2.2 減少數(shù)據(jù)來提升查詢速度
比如下拉操作時,先清除舊數(shù)據(jù),再插入新數(shù)據(jù)保證數(shù)據(jù)庫中的數(shù)據(jù)總量小,提升查詢速度。
2.3 避免大數(shù)據(jù)多表的聯(lián)合查詢
和2.1的方式其實是一樣的原理,只是這里需要特別拿出來說明以下,比如有文件表,還有多媒體文件表,你可以設計成一張文件表,一張多媒體關聯(lián)表存放多媒體數(shù)據(jù),文件信息還是在文件表中,然后通過外鍵關聯(lián)。
但是如果兩個表數(shù)據(jù)很多,主鍵還不一致同時數(shù)據(jù)從服務器下來的數(shù)序也不一致那么,兩個表的聯(lián)合查詢出來的數(shù)據(jù)要慢的多,這個時候就可以用冗余來喚起查詢速度了。
?
參考文獻:http://www.jianshu.com/p/3b4452fc1bbd轉載于:https://www.cnblogs.com/yl-saber/p/7407074.html
總結
以上是生活随笔為你收集整理的sqlite性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 影视剧成真:人工智能踏出了“变人”最后一
- 下一篇: 雷军:小米汽车100%自研自动驾驶!先砸