【发布时间】: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