【发布时间】:2012-01-24 22:49:13
【问题描述】:
我有一个包含多个字段的数据库
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
..和 ~150k 行。
由于这是一本字典,我正在使用 LIKE 搜索带有掩码 'search_string%' 的单词。
它过去工作得很好,需要 15 毫秒才能找到匹配的行。该表具有字段'word' 的索引。
最近我修改了表(该表的某些字段超出了范围)并且发生了一些事情 - 执行查询需要 400 毫秒,所以我理解它现在无法使用索引。
使用 = 而不是 like 的直接查询显示 10 毫秒的结果。
有人知道这里发生了什么吗?
【问题讨论】:
-
我想是的,你可能想看看b-tree,因为b-tree在范围查询和比较方面很有效。
-
嗯,索引不是假设b-tree的创建吗?你的意思是,我应该自己创建一个 b-tree?
-
% 总是只在搜索词的末尾,而不是开头吗?
-
也许尝试删除并重新创建索引?
-
您应该尝试使用
EXPLAIN QUERY PLAN来查看您的查询发生了什么。
标签: sql sqlite cocoa sql-like query-performance