checksum 哈希函数的妙用
来源:互联网 发布:阳台种菜知乎 编辑:程序博客网 时间:2024/05/22 15:41
例如找出在T1有,T表没有的记录。
SELECT *
FROM T1
WHERE CHECKSUM( * )
NOT IN ( SELECT CHECKSUM( * ) FROM T)
2.用于创建计算列索引 下列示例显示使用 CHECKSUM 生成哈希索引。通过将计算校验和列添加到索引的表中,然后对校验和列生成索引来生成哈希索引。 校验和索引可用作哈希索引,尤其是当要索引的列为较长的字符列时可以提高索引速度。校验和索引可用于等价搜索。 对计算列创建索引将具体化为校验和列,对 ProductName 值所做的任何更改都将传播到校验和列。也可以直接对索引的列生成索引。然而,如果键值较长,则很可能不执行校验和索引甚至常规索引。 3.用此函数可以创建sql server 的hash partition(哈希分区). 从所周知,sql server 2005 只有列表分区,范围分区. 使用checksum函数可以创建相应的hash partition. 建立分区函数: RANGE LEFT FOR VALUES (-1073741824, 0, 1073741824) 注意:我们这里使用的int型数据,因为hash函数是checksum(id),这里根据int的最大长度进行分区,我们使用2,147,483,648/2=1073741824 创建分区方案及相应的表: CREATE PARTITION SCHEME sche_fun_hash AS PARTITION fun_hash all TO ([PRIMARY]) [id] [varchar](32) NOT NULL, [sid] int, [hashid] AS (checksum([id])) PERSISTED ) ON sche_fun_hash ([hashid]) 插入数据并查看数据分布情况: insert into test(id,sid) select replace(newid(),'-',''),1 from (select top 100 * from syscolumns) a ,(select top 100 * from syscolumns) b $partition.fun_hash(hashid) AS 分区号,count(*) 数据条数 FROM test group by $partition.fun_hash(hashid) 查看结果: 分区号 数据条数 基本做到了分布均匀. 原文见; http://xuyuanfeng.spaces.live.com/blog/cns!7F42A14999A0FDC5!258.entry
– 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
这里:Range left 意思: <=
Range right 意思: <
CREATE TABLE [dbo].test(
SELECT
3 2438
1 2527
4 2532
2 2503
- checksum 哈希函数的妙用
- checksum 哈希函数的妙用
- 使用CHECKSUM的哈希索引
- checksum()函数
- CHECKSUM函数
- 哈希的妙用
- IP协议的CheckSum函数之理解
- IP协议的CheckSum函数之理解
- HYPERLINK函数的妙用
- 函数指针的妙用
- sscanf函数的妙用
- 函数索引的妙用
- exit函数的妙用
- extract()函数的妙用
- 绝对值函数Abs()的妙用
- 函数指针数组的妙用
- CreateProcess API函数的妙用
- ::GetModuleFileName函数的一个妙用
- 实验四 进程的管道通信
- 实验五 消息的发送与接收
- 实验六 共享存储区通信
- 实验七 存储管理---------常用页面置换算法模拟实验
- 读《全程软件测试第一章》有感
- checksum 哈希函数的妙用
- 软件构架
- 准备移植xynth到arm板上了。
- error LNK2001: unresolved external symbol _main解决办法
- sqlsever2005 jdbc 连接
- Oracle的一些的一些
- ASP.NET面试题集锦
- Java SE 6中的JDBC 4.0增强
- System.getProperty()参数大全