SQLite索引的排序顺序

6
在创建SQLite索引时,存在排序顺序。

https://sqlite.org/lang_createindex.html

每个列名或表达式后面都可以跟随“ASC”或“DESC”关键字来指示排序顺序。因此,在创建索引时,有三个选项:无排序、ASC和DESC。我应该如何使用它们的信息在哪里?我找不到。
我猜,如果我在查询中使用ASC或DESC,我应该将它们添加到索引中。但是,如果它们在不同的查询中,则应该同时添加它们吗?还是应该只是不设置排序顺序,让它自己选择?
这方面的一般规则是什么?

“add them both” 是什么意思?我无法想象如何编写语法。"can be followed by one of the "。 - Yunnosch
1
@Yunnosch,一个接一个地,两个不同的索引,一个是升序,另一个是降序(第三个没有排序顺序?) - Qiao
2个回答

10

SQLite可以在指标的两个方向上进行扫描。对于单列的索引,这意味着它可以用于按ASCDESC顺序排序。

参考:

如果要按水果排序,则从上到下扫描Idx1索引(或者如果使用“ORDER BY fruit DESC”则从下往上),以按顺序找到每个项目的行ID。

但对于超过一个列的索引,可能希望按多个方向对数据进行排序。例如,在双列索引上,可能希望按 ASC、ASC; ASC、DESC; DESC、DESC; 或DESC、ASC的顺序进行排序。

如果索引是按ASC、ASC的顺序创建的,则通过ASC、ASCDESC、DESC排序将能够充分利用该索引。但仅使用索引无法进行ASC、DESCDESC、ASC排序。这就是为什么必须指定索引顺序的原因。

了解更多信息,请访问:https://use-the-index-luke.com/sql/sorting-grouping/order-by-asc-desc-nulls-last


-1
SQLite可以双向遍历索引,所以一般来说,索引的顺序并不重要。

4
那么它为什么在这里呢? - Qiao
我不确定,有可能后来添加了向后步进的功能。 - CL.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接