|
|
1
120
当与复合索引一起使用时,这一点很重要:
可用于:
或:
,但不适用于:
单列上的索引可以以两种方式高效地用于排序。 有关详细信息,请参阅我的博客中的文章: 更新: 事实上,即使对于单列索引,这也很重要,尽管它并不那么明显。 设想一个聚集表列上的索引:
指数
由于表是集群的,对行的引用实际上是
这意味着索引的叶实际上是在
不需要排序。 如果我们创建索引如下:
,然后是
这意味着以下查询:
可以由
换句话说,构成
|
|
2
63
对于一个真正的单列索引,它与查询优化者的观点没有什么区别。 对于表定义
查询
使用具有扫描方向的有序扫描
然而 它可以在逻辑碎片方面产生很大的差异 . 如果索引是使用键降序创建的,但是新行附加了升序键值,那么您可以以每一页都不符合逻辑的顺序结束。这会严重影响扫描表时IO读取的大小,而该表不在缓存中。 查看碎片结果
对于下面的脚本
可以使用“空间结果”选项卡验证假设,这是因为在这两种情况下,后面的页面都有升序键值。
|
|
|
3
8
当您想要检索大量已排序的数据而不是单个记录时,排序顺序很重要。 请注意(正如您在提出问题时所建议的那样),排序顺序通常远不如正在索引的列重要(如果顺序与所需顺序相反,则系统可以反向读取索引)。我很少给出索引排序顺序的任何想法,而我却为索引所覆盖的列而苦恼。 @Quassnoi提供了 great example 当它 做 物质。 |
|
|
Max · 用两列中的特定值对识别R中的数据帧行 1 年前 |
|
|
Dasi · Pandas.loc返回序列或浮点数不一致 2 年前 |
|
climsaver · 首次连续查找两个相同值的索引 2 年前 |
|
|
babipsylon · 在C中创建div_t类型结构元素的数组++ 2 年前 |
|
|
Martin AJ · 如何在庞大的数据集上快速执行COUNT(*)? 2 年前 |