我有一個非常簡單的數據庫結構。我在一個表中有12列,大多數是varchar(< 50),約有8500行。如何加速或優化iOS的SQLite查詢?
當我在iPhone 4執行以下查詢,我一直在2.5-3平均秒鐘,結果:
SELECT * FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20
似乎並不喜歡這樣的事情應該是這麼慢。有趣的是,來自第二代iPod上運行的相同應用程序的相同查詢快了大約1.5秒。那部分超越了我。
我有有同樣的問題其他查詢: SELECT * FROM names WHERE SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20
和
SELECT * FROM names WHERE name LIKE ?3 AND SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20
等
我在SQLite的數據庫添加一個索引:CREATE INDEX names_idx ON names (name, origin, sex, meaning)
其中name
,origin
,sex
和meaning
是我傾向於查詢的列與WHERE
和LIKE
運營商。
有關改善這些搜索性能的任何想法或者這是關於原子性的嗎?
如果您在ORDER BY子句中刪除COLLATE運算符(即,只是'ORDER BY name ASC'),那麼您的三個查詢的相對性能如何? – pilcrow 2012-02-02 20:57:30