1. 程式人生 > >學習筆記:SQLite資料庫索引的使用

學習筆記:SQLite資料庫索引的使用

專案需要用到SQLite資料庫,當資料量很大(60萬)的時候,根據條件搜尋資料表的速度不能接受。於是就為搜尋頻率高的表建立索引,比如現在有個表B, 裡面儲存了20萬甚至更多的資料, 該表分為ID, name, time, data等欄位。假如你經常需要使用 select ID, name, data from B where name == "xxx" and (time >= time1 and time < time2); 來查詢某個時間段且名字為xxx的資料。這時候為了提高搜尋的效率可以為該表建立一個組合索引:

SQL語句為: create index if not exists B_index on B (name, time);

我建立的資料庫模式是WAL模式,經過測試(表中有60萬條資料): 

(1)未建立索引從60萬條資料中搜索出滿足條件的40條資料用時大約為1300 ms。

(2)使用組合索引從60萬條資料搜尋出滿足條件的40條資料用時大約為20 ms。

可以看出使用索引可以優化搜尋速度,大概可以加快60多倍。

但是給表建立索引以後會影響儲存資料的速度,在開啟事務的前提下,經測試:

(1)未建立組合索引的原始表,迴圈儲存20萬條資料,大概用時15秒。

(2)而建立索引以後,儲存20萬條資料用時為25秒。

可以看出在表中建立索引有利也有弊,需要根據具體情況進行選擇是否建立索引。