优化sql server数据库

Joa*_*nne 3 database sql-server sql-server-2008

我的数据库有一个非常大的表,超过20亿行,有3列.Id(uniqueidentity),Type(int,0-10.0 =最常用.10 =最少使用),数据(1-10MB之间的二进制数据)

有什么方法可以优化这个数据库?(主要是选择查询)

*注意:我稍后可能会在此表中添加更多列(例如:位置,日期......)

Rem*_*anu 5

假设该id列是聚簇索引键,并假设uniqueidentity您的意思是uniqueidentifier:

  • 你需要这种uniqueidentifier类型吗?为什么?
  • 你还考虑过其他什么选择?
  • 您是否使用顺序GUID填充数据?

对于群集密钥,GUID是一个众所周知的糟糕选择.有关更详细的讨论,请参阅GUID作为PRIMARY KEY和/或聚类键:

但是,一个非顺序的GUID - 比如在客户端(使用.NET)生成它的值或由newid()函数(在SQL Server中)生成的GUID可能是一个非常糟糕的选择 - 主要是因为碎片它在基表中创建,但也因为它的大小.它不必要地宽(它比基于int的身份宽4倍 - 这可以给你20亿(真正的,40亿)唯一行).并且,如果你需要超过20亿,你总是可以使用bigint(8字节int)并获得2 ^ 63-1行

还读了磁盘空间很便宜......这不是重点!作为后续行动.

除此之外,您需要完成您的功课并发布此类问题所需的详细信息:确切的表和索引定义,流行的数据访问模式(按键,按范围,过滤器排序,联接等).

到目前为止,您是否已做过任何工作来确定问题?如果没有,请从等待和队列开始,这是一种经过验证的方法,可以识别性能瓶颈.一旦您测量并找到需要改进的地方,我们就可以建议如何改进.