2010年12月17日 星期五

[sqlite] index 加快了查詢速度

原本我的表格裡,只有單純的幾個欄位,沒有任何欄位有設定 key 屬性,
也都沒有設定流水號的欄位。

要檢查資料是否有重覆的時候,我就得自己準備了一個 sql 字串來檢查,
到了資料有 22 萬筆的時候,大約查一次要 0.2 秒。
insert 或 update 一次只要 0.001 ~ 0.0017,看硬碟忙不忙。
如果有 14 萬筆資料,就要花 7 個小時在檢查資料重覆性。
塞一年的股票資料就很花工夫了。

後來查到網路上說,資料庫的 index 若有建立,可以省下很多時間,
當下試試看。

語法是:

create unique index if not exist <indexname> on <tablename> ( <keycolumn>, )

做完之後,馬上查詢的時間一次只要 0.001 秒,甚至有時少於 1 毫秒。

真省時間!

玩 database 還真麻煩。
這種事感覺是很基本資料庫優化的工作,應該要預設開啟的?
或是因為我沒有設 key column 引擎也不知道要怎麼幫吧。

這次以後就要對於 table schema 及 index 特別注意了。

ref:
http://www.sqlite.org/lang_createindex.html

沒有留言:

張貼留言