1

我有一个带有一个 int PRIMARY KEY IDENTITY 列的大表。

我想使用该主键进行 SELECT 查询是数据库在表中查找行的最快方法,不是吗?

如果这是真的,我还有一个问题。该查询是否与按键调用字典一样快,或者数据库仍然必须从头(主键列)读取所有行,直到找到行本身?

提前谢谢^^

4

2 回答 2

1

使用主键显然是访问特定行的最快方法。

如果你想了解它是如何工作的,你必须了解索引是如何工作的。

一般来说,它是这样工作的:

假设您有一张桌子t1(col1,col2...col10),并且您在col1. 索引col1意味着您有一些包含对的数据结构,(col1, rec_id)rec_id允许使用适当col1的 . 数据结构按 排序col1,因此允许按 进行有效搜索col1

于 2013-02-19T07:50:36.113 回答
0

我认为在字典中搜索每个字典搜索算法应该更像二进制搜索类型。

当您将一列声明为表中的主键时,该列会被索引,因此它应该基于散列原理工作,因此搜索绝对不是您提到的逐行搜索。

最后,是的,这是一种常见且快速的方法,但您应该选择 sql 查询中所需的列数和行数。避免每次选择调用获取大量行。

于 2013-02-19T06:59:12.370 回答