首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化sql server数据库

优化sql server数据库
EN

Stack Overflow用户
提问于 2010-12-09 07:47:07
回答 2查看 359关注 0票数 3

我的数据库有一个非常大的表,其中包含20多亿行和3列。Id(唯一标识),类型(int,介于0-10之间。0=最常用。10 =最少使用),数据(1-10MB之间的二进制数据)

我可以用什么方法来优化这个数据库?(主要是select查询)

*注意:稍后我可能会在此表中添加更多列(例如: location、date...)

EN

回答 2

Stack Overflow用户

发布于 2010-12-09 07:56:34

假设id列是聚集索引键,并且假设uniqueidentity指的是uniqueidentifier

为什么?

  • 您还考虑过其他选择吗?

  • 您是否使用顺序GUID填充数据?

众所周知,GUID是集群键的糟糕选择。

但是,不是顺序的GUID -例如在客户端(使用.NET)或由

()函数(在SQL Server中)生成它的值的GUID-可能是非常糟糕的选择-主要是因为它在基表中创建的碎片,但也因为它的大小。它的宽度是不必要的(它比基于int的标识宽4倍-这可以为您提供20亿(实际上是40亿)个唯一行)。而且,如果您需要超过20亿行,您总是可以使用bigint (8字节int)并获得2^63-1行

除此之外,您还需要做好功课,并提供此类问题所需的详细信息:准确的表和索引定义、流行的数据访问模式(按键、按范围、过滤器排序顺序、连接等)。

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

票数 5
EN

Stack Overflow用户

发布于 2010-12-09 07:56:23

  • 添加索引。决定哪一(哪些)列是最合适的聚集索引。
  • 决定在每个(否则很小的)行中存储10MB的二进制数据是否能很好地利用数据库

更新以回应Remus的评论

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4393507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档