【问题标题】:How clustered and Non clustered index makes search faster?聚集索引和非聚集索引如何使搜索更快?
【发布时间】:2014-07-28 23:31:24
【问题描述】:

聚集索引对磁盘上的数据进行物理排序。

假设我有表employee 和columdemployee_id。现在我在employee_id 下存储值9, 6, 10, 4。在employee_id 上有聚集索引。 磁盘上的值将以排序方式存储,即 4、6、9、10。现在如果我搜索 id 为 9 的employee_id,数据库可以使用搜索算法 像二进制搜索或其他一些快速查找 id 为 9 的记录。因此,它可能不会像二进制 serach 那样在一次操作中对记录进行精细处理。 正确吗?

非聚集索引 非聚集索引具有索引列中保持有序的数据的副本 连同指向实际数据行的指针(指向聚集索引的指针,如果有的话)。因此,如果采取与上述相同的示例。 在这种情况下,数据库将创建单独的对象来存储数据以及内存位置。类似这样的东西

9 -- 它的物理位置

6 -- 它的物理位置

10 -- 它的物理位置

4 -- 它的物理位置

所以我首先需要在新创建的对象中搜索 10 并获取它的内存 地点。然后回到原来的内存位置。 那么它是如何让搜索变得更快的呢?

另外根据我的理解,索引应该在 where 子句而不是 select 子句下的列上创建。 对吗?

【问题讨论】:

    标签: database indexing clustered-index non-clustered-index


    【解决方案1】:

    考虑一个更大的数据集 - 不是四个值,而是一百万。一旦找到正确的物理位置,通过索引进行查询可能确实需要从表中执行另一次读取的开销很小,但是对于大型数据集,当您考虑与执行完整扫描相比搜索索引的速度时,它可以忽略不计在未排序的表上。

    【讨论】:

    • 我同意索引使搜索更快,但我不知道它如何使搜索更快,尤其是非聚集索引。我的问题是关于这方面的。我在 OP 中提出了三个与此相关的问题。
    猜你喜欢
    • 2013-08-07
    • 2021-01-14
    • 2021-09-07
    • 1970-01-01
    • 2020-08-04
    • 2016-01-05
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多