-1

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

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

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

9 -- 它的物理位置

6 -- 它的物理位置

10 -- 它的物理位置

4 -- 它的物理位置

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

同样根据我的理解,应该在 where 子句而不是 select 子句下涉及的列上创建索引。正确的?

4

1 回答 1

0

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

于 2014-06-08T05:44:43.377 回答