ype*_*eᵀᴹ 8 sqlite performance index database-design query-performance
我们有下表(在 Android 上的 SQLite 中),其中包含单词及其频率的树结构(嵌套集模型):
lexikon
-------
_id integer PRIMARY KEY
word text
frequency integer
lset integer UNIQUE KEY
rset integer UNIQUE KEY
Run Code Online (Sandbox Code Playgroud)
和查询:
SELECT word
FROM lexikon
WHERE lset BETWEEN @Low AND @High
ORDER BY frequency DESC
LIMIT @N
Run Code Online (Sandbox Code Playgroud)
我认为覆盖索引(lset, frequency, word)
会很有用,但我觉得如果范围内的lset
值太多,它可能表现不佳(@High, @Low)
。
(frequency DESC)
有时,当使用该索引的搜索早期产生@N
与范围条件匹配的行时,一个简单的索引也可能就足够了。
但似乎性能在很大程度上取决于参数值。
有没有办法让它快速执行,不管范围(@Low, @High)
是宽还是窄,也不管高频词是否幸运地在(窄)选择的范围内?