索引的顺序(升序与降序)重要吗?

use*_*951 3 database indexing

有人说对于复合索引然后排序很重要。有人说订购无关紧要。

哪一个是对的?为什么?

我的意思是,如果我查找电话,我根本看不到电话是按 a 到 z 还是按 z 排序。对于复合索引,这将如何改变?

注意:我的意思是按降序或升序排序。我很清楚列的顺序很重要。

请注意,我们有高分成员的 2 个答案。有人说,即使对于复合索引,降序或升序也无关紧要。另一个说这很重要。所以是的,这里存在争议。我(或我们)在哪里可以挖掘更多。

Jen*_*der 6

一般情况下的订购确实很重要。问题是:您指的是什么顺序,这对您的情况有影响吗?

  1. 下降与上升。仅在非常特殊的情况下才有意义,在这种情况下,您确实希望按特殊顺序对结果进行排序。假设你希望你的结果是这样排序的:

    a 升序、b 降序、c 升序

但你的指数是

a asc, b asc, c asc
Run Code Online (Sandbox Code Playgroud)

数据库必须进行额外的排序。当您想按照某种顺序访问前 n 个元素时,这同样适用。这对于组合索引更重要,因为单列的方向改变会导致完全不同的总排序,而单列索引中单列的排序只是颠倒了排序。

  1. 列的顺序如此

    甲、乙、丙

对比

b, a, c
Run Code Online (Sandbox Code Playgroud)

如果您对所有列进行过滤,则没有太大区别,但如果您仅过滤 a,则第一个索引将比第二个索引更有用。

每当您有两种选择来解决编程语言中的问题时,如果有人告诉您它们没有区别,请询问为什么存在这两种选择。如果“某人”不能回答这个问题,我就不会相信他关于两者等价的建议。