对sqlite索引进行排序

时间:2017-07-13 17:56:26

标签: sqlite sorting indexing

为sqlite创建索引时有排序顺序。

https://sqlite.org/lang_createindex.html

  

每个列名称或表达式后面都可以跟一个“ASC”或“DESC”关键字来表示排序顺序。

因此,有三个选项:创建索引时的no-sort,ASC,DESC。关于我应该如何使用它们的信息在哪里?我找不到。

我想,如果我在查询中使用ASC或DESC,我应该将它们添加到索引中。但如果它们都在不同的查询中,我应该添加它们吗?或者我应该不设置排序顺序,它会自己选择它吗?

它的一般规则是什么?

2 个答案:

答案 0 :(得分:0)

SQLite可以在两个方向上单步执行索引,因此通常,索引顺序无关紧要。

答案 1 :(得分:0)

SQLite可以双向扫描索引。对于单列上的索引,这意味着可以同时按ASCDESC的顺序进行排序。

Reference

  

从上至下(如果使用“ ORDER BY fruit DESC”,则从下至上)扫描Idx1索引,以便按水果顺序查找每个项目的行标识符。

但是对于多于一列的索引,可能需要两个以上的方向来对数据进行排序。例如,在两列索引上,可能希望通过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