![]() |
1
11
好的,2分。
|
![]() |
2
6
我认为SQL Server本机没有基于哈希表的索引。这个 BOL documentation 正在讨论根据计算值建立标准(树)索引。这和 Linear Hash Table 这是一些DBMS平台上可用的索引结构,但不是SQL Server(Afaik)。 使用中描述的技术可能会获得一些好处。 this blog post 散列大字符串值(如url)以加快查找速度。但是,底层索引仍然是一个树结构,是O(log n)。 |
![]() |
3
1
您可以尝试设置事物以使用哈希联接,您可以查看执行计划以验证是否实际使用了哈希联接。使用哈希联接时,SQL Server仍将首先构建哈希表,作为执行单个查询的一部分。我相信索引永远不会存储为哈希,只存储为树。 一般来说,我不会创建一个人工散列,除非您对潜在的大型字符串或二进制blob进行精确匹配(如Pipthegeek提到的)。我只是想补充一下,有时这是必要的,因为字符串可能太大,无法放入索引键。我认为对于SQL Server,索引键的大小是有限制的。 当然,在您的连接中,您需要包含哈希列和源列,以解决哈希产生的任何模糊性。 |
![]() |
4
0
如果ID字段是int,那么在ID字段上搜索索引校验和与聚集索引相比没有优势,因为两者都将执行聚集索引搜索。此外,int列的校验和总是返回与该列相同的值(即,校验和(535)=535)。但是,如果ID是长字符列,校验和查找通常会执行得更好。 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 7 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 7 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 7 月前 |