数据库单表海量数据优化

Tll_W 2012-12-13 08:45:13
情况是这样的:数据库是SQL Server2008,有一个表里的记录已经有700W条记录了,但是在开始创建表的时候,ID是用guid生成的,可以说是主键,但是我没有把这个字段设置为主键。现在查询其中的数据,发现速度特别慢,各位帮我判断一下,设置主键有没有帮助查询速度?另外有没有其他办法优化这个表?
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shoppo0505 2012-12-13
  • 打赏
  • 举报
回复
对于所有join,where中所使用的字段都做一下索引好了,ID设为主键的话,就不用再为ID列添加索引了。
發糞塗牆 2012-12-13
  • 打赏
  • 举报
回复
引用 6 楼 Tll_W 的回复:
引用 5 楼 DBA_Huangzj 的回复:联机丛书有实例,这里一时半刻很难说清楚,也要看你的实际情景,大部分的分区是按照时间来分区,比如每个月一个区。有些应用,比如移动分区,一般是按地区来分区。当然也不排除还有别的分区方法。 分区和我理解上的把表分成多个表是一个概念吗?
你看到的是一个表,但是SQLServer在存储方面内部做了一些改动,分散到磁盘的不同地方,所以实际上它是多个块。比如按月分区,一年就有12块,当你查询某个月的数据时,如果不分区,查询需要面对的是12个月的数据,但是分区之后,查询只需要扫描或者查找一个区的数据,从理论上就减少了12倍的数据量。
唐诗三百首 2012-12-13
  • 打赏
  • 举报
回复
在查询条件的字段上建索引.
开启时代 2012-12-13
  • 打赏
  • 举报
回复
分区表 是逻辑上是一个表, 物理上可以多个表的 大数据表存储方案。
Tll_W 2012-12-13
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
联机丛书有实例,这里一时半刻很难说清楚,也要看你的实际情景,大部分的分区是按照时间来分区,比如每个月一个区。有些应用,比如移动分区,一般是按地区来分区。当然也不排除还有别的分区方法。
分区和我理解上的把表分成多个表是一个概念吗?
發糞塗牆 2012-12-13
  • 打赏
  • 举报
回复
联机丛书有实例,这里一时半刻很难说清楚,也要看你的实际情景,大部分的分区是按照时间来分区,比如每个月一个区。有些应用,比如移动分区,一般是按地区来分区。当然也不排除还有别的分区方法。
Tll_W 2012-12-13
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
索引这些很大程度要看你的查询,如果你的查询700W需要返回600W,那什么索引都是白搭。如果只返回少量数据,那就要考虑从where条件、on、order by这些地方着手做索引,对大数据量。可以做个表分区来减少某些范围的数据量。
表分区具体怎么实施啊?
發糞塗牆 2012-12-13
  • 打赏
  • 举报
回复
索引这些很大程度要看你的查询,如果你的查询700W需要返回600W,那什么索引都是白搭。如果只返回少量数据,那就要考虑从where条件、on、order by这些地方着手做索引,对大数据量。可以做个表分区来减少某些范围的数据量。
开启时代 2012-12-13
  • 打赏
  • 举报
回复
查询速度慢 ,要看你查询的条件里 字段是否做了索引。和guid没什么关系
Tll_W 2012-12-13
  • 打赏
  • 举报
回复
如果对这种海量数据的表有经验的也可以直接QQ联系我。QQ是476492162

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧