Sql Server 2005 哈希索引的实现

9/26/2011来源:SQL技巧人气:9212

 今天才发现sql server 里面也有哈希索引,真是罪过。用数据库这么久了。
还是进入正题吧~~
下列示例显示使用 CHECKSUM 生成哈希索引。通过将计算校验和列添加到索引的表中,然后对校验和列生成索引来生成哈希索引。
– Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks;
GO
ALTER TABLE PRoduction.Product
ADD cs_Pname AS CHECKSUM(Name);
GO
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO

校验和索引可用作哈希索引,尤其是当要索引的列为较长的字符列时可以提高索引速度。校验和索引可用于等价搜索。
/*Use the index in a SELECT query. Add a second search
condition to catch stray cases where checksums match,
but the values are not the same.*/
SELECT *
FROM Production.Product
WHERE CHECKSUM(N’Bearing Ball’) = cs_Pname
AND Name = N’Bearing Ball’;
GO

对计算列创建索引将具体化为校验和列,对 ProductName 值所做的任何更改都将传播到校验和列。也可以直接对索引的列生成索引。然而,如果键值较长,则很可能不执行校验和索引甚至常规索引。
上面的内容来自sql server 2005 的帮助文档,checksum函数

补充一下创建了cs_Pname 列后,cs_Pname是一个计算列,就是说你在插入数据的时候不用管它。数据库自己会自动计算它的值。
在查找的时候就可以用上面的例子,注意一下where后面的写法就可以了
  评论这张