【发布时间】:2012-12-12 23:08:56
【问题描述】:
我创建一个表使用这样的模式:
CREATE TABLE wordIndex(id integer primary key, word varchar(128), offset integer, length integer);
CREATE INDEX word_idx on wordIndex(word);
现在表有大约 450,000 行记录。当我在 ipod4 上使用下面的 Like 语句时,性能不好: select * from wordIndex where word like 'test accesses%'; 使用解释输出:
explain select * from wordIndex where word like 'test acces%';
0|Trace|0|0|0||00|
1|Goto|0|16|0||00|
2|OpenRead|0|2|0|4|00|
3|Rewind|0|14|0||00|
4|String8|0|2|0|test acces%|00|
5|Column|0|1|3||00|
6|Function|1|2|1|like(2)|02|
7|IfNot|1|13|1||00|
8|Rowid|0|4|0||00|
9|Column|0|1|5||00|
10|Column|0|2|6||00|
11|Column|0|3|7||00|
12|ResultRow|4|4|0||00|
13|Next|0|4|0||01|
14|Close|0|0|0||00|
15|Halt|0|0|0||00|
16|Transaction|0|0|0||00|
17|VerifyCookie|0|2|0||00|
18|TableLock|0|2|0|wordIndex|00|
19|Goto|0|2|0||00|
我可能需要构建一个额外的倒排索引来提高性能还是...? 提前感谢!
【问题讨论】:
-
你是否只使用这种模式来表示 LIKE(即以开头)?
-
是的,只是“aaa%”模式
标签: sql performance sqlite sql-like