gpt4 book ai didi

sorting - SQLite - 利用排序索引

转载 作者:行者123 更新时间:2023-12-03 16:22:44 31 4
gpt4 key购买 nike

这可能很简单,但我找不到答案。

我正在尝试尽量减少使用 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 查询

最佳答案

带有 LIMIT 的 ORDER BY 比普通的 ORDER BY 更有效一点,因为只有前几行需要完全排序。

无论如何,对于单列索引,排序顺序(ASC 或 DESC)是没有意义的,因为 SQLite 可以向前或向后遍历索引。

当 SQLite 估计索引有用时,会自动使用索引。
要检查实际发生的情况,请运行 EXPLAIN QUERY PLAN (或在 .eqp on shell 中设置 sqlite3)。

关于sorting - SQLite - 利用排序索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487896/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com