聚簇索引以物理方式对磁盘上的数据进行排序。
假设我有桌面员工和columd employee_id。现在我将值9, 6, 10, 4
存储在employee_id下。在employee_id上使用聚簇索引。
磁盘上的值将以排序的方式存储,即4,6,9,10。现在如果我在employee_id上搜索id为9,数据库可以使用搜索算法
比如二进制搜索或其他一些id为9的快速点记录。所以它可能不会像二进制搜索那样在一次操作中记录。
这是正确的吗?
非聚集索引 非聚集索引具有来自保持有序的索引列的数据的副本 以及指向实际数据行的指针(指向聚簇索引的指针,如果有的话)。所以如果采取与上面相同的例子。 在这种情况下,数据库将创建单独的对象来存储数据以及内存位置。像这样的东西
9 - 其植物位置
6 - 其植物位置
10 - 其植物位置
4 - 其植物位置
所以我首先需要在新创建的对象中搜索10并获取其内存 地点。然后回到原始内存位置。 那怎么会让搜索更快?
另据我的理解,应该在where子句不在select子句下的相关列上创建索引。 从右吗
答案 0 :(得分:0)
考虑一个更大的数据集 - 不是四个值,而是一百万个。一旦找到正确的物理位置,通过索引查询可能确实需要从表中执行另一次读取的开销很小,但是对于大型数据集,当您考虑将索引与执行完整扫描的速度进行比较时,它可以忽略不计在未分类的桌子上。