sqlite效能最佳化

來源:互聯網
上載者:User

標籤:get   提升   不一致   十分   讀寫   修改   欄位   資料庫   導致   

1、資料庫效能上

1.1 批量事務插入,提升資料插入的效能

由於sqlite預設每次插入都是事務,需要對檔案進行讀寫,那麼減少事務次數就能簡書磁碟讀寫次數從而獲得效能提升。

1.2 單條sql優於多條sql

實測發現,對於幾十條sql插入當你替換成單條sql時效能有所提升,但是這裡要注意的是,換成單條可讀性較差,同時會出現sql超長的錯誤。

1.3 讀和寫操作是互斥的,寫操作過程中可以休眠讓讀操作進行

由於第一步所說的多資料事務插入,從而會導致插入時間增長那麼也會影響資料展示的速度,所以可以在插入過程中休眠操作,以便給讀操作流出時間展示資料。

1.4 使用索引

適當的索引的好處是讓讀取變快,當然帶來的影響就是資料插入修改的時間增加,因為還得維護索引的變化。不過對於大部分的讀操作多於寫操作的資料庫來說索引還是十分有必要的。關於如何設計索引,可以參考下面這個文章:

索引最佳化

1.5 使用聯合索引

過多的索引同時也會減慢讀取的速度,很典型的一個情況就是比如要同時根據省市區縣查詢,又可以根據年月日查詢,如果每個都做索引那麼讀取速度將會顯著降低。

對於這種有層級關係的關鍵字,就可以考慮聯合索引了,比如首先根據省查詢,然後根據省市查詢,層層遞進到省市區縣的查詢方式,就可以使用聯合索引,效果非常好。

1.6 勿使用過多索引

1.7 增加查詢條件

當你只要一條資料時增加limit 1,這樣搜尋到了後面的就不會再查詢了,大大的加快了速度

1.8 提前將欄位的index映射好

減少getColumnIndex的時間,可以縮短一半的時間

2、資料庫設計上

2.1 通過冗餘換取查詢速度

2.2 減少資料來提升查詢速度

比如下拉操作時,先清除舊資料,再插入新資料保證資料庫中的資料總量小,提升查詢速度。

2.3 避免大資料多表的聯集查詢

和2.1的方式其實是一樣的原理,只是這裡需要特別拿出來說明以下,比如有檔案表,還有多媒體檔案表,你可以設計成一張檔案表,一張多媒體關聯表存放多媒體資料,檔案資訊還是在檔案表中,然後通過外部索引鍵關聯。

但是如果兩個表資料很多,主鍵還不一致同時資料從伺服器下來的數序也不一致那麼,兩個表的聯集查詢出來的資料要慢的多,這個時候就可以用冗餘來喚起查詢速度了。

 

 參考文獻:http://www.jianshu.com/p/3b4452fc1bbd

sqlite效能最佳化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.