为什么要说呢?请参见http://www.sql-club.com/net2004/archive/2005/09/13/199.aspx

Partition一直就是一个很难用于实际应用的功能。为什么呢?选择分区字段是一个关键。必须要能使数据均匀的分散到不同的物理存储,又能使分区字段能够包含查询条件。
在smaple中大多是以ID或者Time作为分区字段,但是实际应用中,大部分查询都不会在这两个字段上。
以MSN为例,我登录的时候,要查询where username = 'luke@hotmail.com' --这不是我的passport
大部分的查询也是基于username的。
那么,我们以username为分区条件如何?可是这样会造成分区不均衡,显然s开头的就比x开头的要多许多。
当然,我们可以分析出字母序的分布概率,但是这是一个挺麻烦的工作,如果还考虑中文,就更加的麻烦了。
怎么办呢?MSN采用的方法是对username的hash值进行分区,值得借鉴哦~
hash的原理我不多介绍了,它有一个功能就是可以把字符串的hash值做到基本平均的分布。

SQL 2005自带一个hash函数,语法如下
HashBytes ( '', { @input | 'input' } )
支持MD2, MD4, MD5, SHA, or SHA1 算法
返回值varbinary (maximum 8192 bytes)