最佳优化大型SQL Server表(100-200 Mil记录)

RPS*_*RPS 6 sql sql-server sql-server-2005

在处理包含100-200百万条记录的大型SQL Server 2005表时,可以执行哪些最佳选项/建议和优化?

Ran*_*der 9

既然你没有陈述数据库的目的或要求,这里有一些一般的东西,没有特别的顺序:

  1. 每个表上的小聚簇索引.考虑将此作为每个表的主键.这将非常有效并节省主表和从属表中的空间.
  2. 适当的非聚集索引(尽可能覆盖索引)
  3. 参照完整性
  4. 规范化表格
  5. 在所有数据库对象上进行一致的命名,以便于维护
  6. 如果您拥有SQL Server企业版,则进行适当的分区(表和索引)
  7. 如果要允许在数据库中进行直接数据操作,则对表进行适当的检查约束.
  8. 确定您的业务规则将驻留在何处,并且不要偏离该规则.在大多数情况下,它们不属于数据库.
  9. 在大量使用的查询上运行查询分析器(至少)并查找表扫描.这会扼杀性能.
  10. 准备好应对僵局.使用这种大小的数据库,特别是如果会有大量写入,死锁很可能是一个问题.
  11. 充分利用视图来隐藏查询连接的复杂性以及查询优化和灵活安全实现的潜力.
  12. 考虑使用模式来更好地组织数据和灵活的安全实现.
  13. 熟悉Profiler.使用这种大小的数据库,您很可能会花一些时间来确定查询瓶颈.Profiler可以在这里为您提供帮助.


Mit*_*eat 1

经验法则是,如果一个表包含超过 2500 万条记录,您应该考虑表(和索引)分区,但此功能仅在 SQL Server 企业版(以及相应的开发人员版)中可用。