小编Mik*_*e.M的帖子

SQLITE 使用 ORDER BY 非常慢

我有一个简单的查询,例如

SELECT * FROM "mytable" where col1="foo"
Run Code Online (Sandbox Code Playgroud)

大约 0.5 秒内即可解析(700 MB 数据库文件的约 100'000 行的约 100 个结果)

然而,我一添加就ORDER BY需要120秒。

SELECT * FROM "mytable" where col1="foo" ORDER BY col2
Run Code Online (Sandbox Code Playgroud)

即使我像这样限制结果

SELECT * FROM (SELECT * FROM "mytable" where col1="foo" LIMIT 1) ORDER BY col2
Run Code Online (Sandbox Code Playgroud)

尽管实际上没有什么可排序的,但它需要 120 秒。

唯一的例外是如果我使用ORDER BY rowid(而不是ORDER BY col2)排序,或者当我这样做时(0.5秒):

SELECT * FROM "mytable" WHERE rowid IN (SELECT rowid FROM "mytable"  WHERE col1="foo") ORDER BY col2
Run Code Online (Sandbox Code Playgroud)

VACUUM检查了数据库并检查了数据库的完整性(好的),但这个问题仍然存在。我正在使用 SQLite 版本:3.7.7.1,速度下降出现在 phpLITEadmin 和我的 PHP …

database sqlite sorting performance

8
推荐指数
1
解决办法
3273
查看次数

标签 统计

database ×1

performance ×1

sorting ×1

sqlite ×1