首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server从大表中删除行并创建索引

Server从大表中删除行并创建索引
EN

Stack Overflow用户
提问于 2016-09-03 12:01:22
回答 1查看 470关注 0票数 1

我在生产服务器中有一个表,它有3.5亿行,大小约为25 in。它只有一个聚集的标识索引。针对此表的查询需要一些缺少的索引,以获得更好的性能。我需要删除不必要的数据(aprox 2亿行),然后创建两个非聚集索引。不过,我有一些忧虑:

  1. 我需要避免把日志增加得太多
  2. 使数据库的停机时间尽可能低。
  3. 在其余数据中保持标识(主键)相同。

我想听听你对采取最好的解决办法的意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-03 12:08:55

以下是关于如何做到这一点的指导方针:

  1. 挂起insert/update操作或显式开始记录它们(这可能导致性能下降)。
  2. 选择要保存在新表中的记录。

那么你有两个选择。如果这是你宇宙中唯一的桌子:

  1. 在新表上构建索引。
  2. 停止系统。
  3. 将现有表重命名为其他表。
  4. 将新表重命名为真正的表名
  5. 把系统打开。

如果有其他表(例如外键关系):

  1. 截断现有表
  2. 将数据插入现有表中
  3. 建立辅助索引
  4. 打开系统

根据您的用户需求,上述变体之一可能适用于您的问题。

请注意,还有其他更内部密集的技术。例如,创建一个复制的数据库,一旦该数据库正常工作,您就有两个系统,并且可以一次在一个系统上进行清理工作(这样的方法将是接近100%正常运行时间要求的系统的首选方法)。或者创建一个完全正确的单独表,并交换表空间。

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

https://stackoverflow.com/questions/39306655

复制
相关文章

相似问题

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