我有一个巨大的表,其中包含一个int PRIMARY KEY IDENTITY列。
我想使用该主键进行SELECT查询是数据库查找表中行的最快方法不是吗?
如果这是真的,我还有一个问题。 该查询是否与按键调用字典一样快,或者数据库仍然必须从头开始读取所有行(主键列),直到找到行本身为止?
提前致谢^^
答案 0 :(得分:1)
使用主键显然是访问特定行的最快方法。
如果您想了解它的工作原理,您必须了解索引的工作原理。
通常情况就是这样:
假设您有一个表格t1(col1,col2...col10)
,并且您在col1
上有一个索引。
col1
上的索引意味着您有一些包含对(col1, rec_id)
的数据结构
并且rec_id
允许使用适当的col1
直接访问行。
数据结构按col1
排序,因此可以col1
进行有效搜索。
答案 1 :(得分:0)
我认为在词典中搜索每个词典的搜索算法应该更像二进制搜索类型。
当你在表中声明一个列作为主键时,那么该列被索引,因此它应该基于散列原理工作,所以搜索肯定不是你提到的一行一行。
最后,是的,它是常见且快速的方式,但您应该选择sql查询中所需的列数和行数。避免每次选择调用获取大量行。