为sqlite创建索引时有排序顺序。
https://sqlite.org/lang_createindex.html
每个列名称或表达式后面都可以跟一个“ASC”或“DESC”关键字来表示排序顺序。
因此,有三个选项:创建索引时的no-sort,ASC,DESC。关于我应该如何使用它们的信息在哪里?我找不到。
我想,如果我在查询中使用ASC或DESC,我应该将它们添加到索引中。但如果它们都在不同的查询中,我应该添加它们吗?或者我应该不设置排序顺序,它会自己选择它吗?
它的一般规则是什么?
答案 0 :(得分:0)
SQLite可以在两个方向上单步执行索引,因此通常,索引顺序无关紧要。
答案 1 :(得分:0)
SQLite可以双向扫描索引。对于单列上的索引,这意味着可以同时按ASC
和DESC
的顺序进行排序。
从上至下(如果使用“ ORDER BY fruit DESC”,则从下至上)扫描Idx1索引,以便按水果顺序查找每个项目的行标识符。
但是对于多于一列的索引,可能需要两个以上的方向来对数据进行排序。例如,在两列索引上,可能希望通过ASC, ASC
进行排序; ASC, DESC
; DESC, DESC
;或DESC, ASC
订单。
如果索引是按ASC, ASC
顺序创建的,则按ASC, ASC
或DESC, DESC
进行排序将能够完全使用索引。但是,仅使用索引无法按ASC, DESC
和DESC, ASC
进行排序。这就是为什么可以指定索引顺序的原因。
有关更多信息:https://use-the-index-luke.com/sql/sorting-grouping/order-by-asc-desc-nulls-last