【发布时间】:2018-07-07 08:37:57
【问题描述】:
这可能很简单,但我找不到答案。
我正在尝试尽量减少使用 ORDER BY 选择记录的开销
我的理解是……
SELECT gorilla, chimp FROM apes ORDER BY bananas LIMIT 10;
...检索完整的匹配记录集,以便可以执行 ORDER BY,即使我只想要前十个记录。这是有道理的。
为了消除这种开销,我研究了以预定义顺序存储记录的可能性,但这只会在插入/删除发生之前有效,在此之前我必须重新构建表。不可行。
我在 SQLite 中找到了一个选项(我假设它也存在于其他 SQL 中)来创建排序索引 (https://www.sqlite.org/lang_createindex.html)...
CREATE INDEX index_name ON apes (bananas DESC);
...我假设表示索引(而不是表)按降序排序,并且在更新后将保持如此。
我的问题是 - 我如何利用它? SQLite 文档在这方面有点笨拙。是否有某种“SELECT FROM index”或等价物?或者列上存在排序索引这一事实是否意味着查询该列的任何结果都将按索引的顺序而不是列的顺序返回?
还是我完全错过了什么?
我正在使用 SQLite3,由 PHP 7.1 查询
【问题讨论】:
标签: sorting indexing sqlite sql-order-by