2
一個約100k行的表。SQLite FTS3不一致的性能
SELECT word FROM entries WHERE word MATCH '"chicken *"';
17 results in 46ms
SELECT word FROM entries WHERE word MATCH '"chicken f*"';
2 results in 5793ms
爲什麼如此巨大的下降?
一個約100k行的表。SQLite FTS3不一致的性能
SELECT word FROM entries WHERE word MATCH '"chicken *"';
17 results in 46ms
SELECT word FROM entries WHERE word MATCH '"chicken f*"';
2 results in 5793ms
爲什麼如此巨大的下降?
「雞*」中的通配符可以有效地忽略,因爲它匹配任何令牌。搜索是在逆向索引中的簡單查找。
「chicken f *」中的通配符需要找到所有以f開頭的單詞,也包含單詞chicken。這是可以理解的更復雜和更慢。
以下是一些閱讀以增強s01ipsist的回答:http://www.sqlite.org/fts3.html#tokenizer – Tim 2011-09-26 23:47:27