我知道当我们用SQL Server主键创建一个表时,会自动创建一个聚集索引。但是,如果我从这个表中删除一行,与此行相关的聚集索引是否仍然保留在索引表中,或者它会自动删除?如果它没有被自动删除,我是否必须创建一个作业来重建和重新组织索引? (是限于MySQL,Oracle等一样吗?)SQL Server中的群集索引
回答
Oracle或MySQL的默认值不相同。每个数据库都有其自己的默认值及其特定功能。有些甚至对不同的含义使用相同的术语。
Oracle不默认为聚集索引,而在Oracle中,等效索引组织表为。在Oracle中,CLUSTER的定义是一个可以存储2个或更多表并将它们排序相同的结构。
如果不是自动删除,我是否必须创建一个作业到 重建和重新组织索引?
重建索引#1规则 - 衡量,测量,衡量。证明重建是有益的,否则除非事情发生变化,否则不要费心去做。
简单删除(或千)不是重建索引的自动原因。
如果您即将重建索引,您应该知道(1)前后访问时间前后的数据块数量(2)。
作为一般的做法,索引重建有许多错误信息和迷信。您所指的索引是B-Tree结构。这些设计是可扩展的,O(日志N)访问。没有证据表明索引必须在默认情况下重新组织。每个指标都是它自己的动物。 B树指标在一段时间后达到停滞点(平衡),当你重建它们时,它们会压缩它们(一件好事),但它们最终会回到停滞点。除非我在其中一个人身上发现性能/ IO问题,否则我会根据具体情况手动进行。
重建的两个最大的优点:
- 更密集组合数据到更少的块,从而提高了缓存和IO。
- 通过累积的实际数据对非聚簇索引进行重新排序。如果你的访问模式总是连续的(包括插入),那么这通常不是问题,块将被排序。
Oracle和SQL Server是很棒的技术。没有证据的情况下重建索引对于专业DBA来说并不合适。
为了清楚起见,重建的意图总是为1.更加密集地将数据打包到更少的块中,这样可以改善缓存和IO.'您可能会为插入等提供空间,这取决于您如何选择聚簇索引该页面拆分不是一个问题。这实际上与所描述的相反。我不是挑选,只是指出我实际遇到的用例。 – 2014-11-01 20:48:08
我知道,当我们创建一个SQLSERVER表的主键,将自动创建一个 聚集索引。
这只有当它是默认选项或者将clustered指定为关键字时才是如此。主键也可以是非聚簇索引。
但是,如果我从该表中删除一行,并与该行的索引表中仍然保留的聚集索引 或者 自动删除?
如果它确实是一个聚集索引,那么索引是表数据。如果你从表格中删除了一些东西,它就消失了。有一些内部工作,例如幽灵记录,但是数据不见了(从应用程序的角度来看)。
如果不是自动删除,我是否必须创建一个作业到 重建和重新组织索引?
也就是说,还有其他背景任务可以处理某些“隐藏”功能。最终,当碎片(内部或外部)开始成为问题时,您会希望重新组织或重建索引。这将取决于其他因素,包括表结构,接入等
(是限于MySQL,Oracle等一样吗?)
问题被标记的SQL Server,所以我回答SQL Server标记。这对于单个帖子来说是一个非常广泛的问题。
- 1. 集群索引SQL Server
- 2. SQL Server 2008中的群集索引
- 3. SQL Server非集群索引 - 包含值
- 4. SQL Server - 分区表与集群索引?
- 5. SQL Server - 何时使用群集与非群集索引?
- 6. SQL Server:将群集主索引更改为非群集
- 7. 群集索引和非聚簇索引 - SQL Server和Oracle?
- 8. SQL Server中主键(集群)和集群唯一索引之间的区别
- 9. 集群索引
- 10. SQL Server集群
- 11. 标准版SQL Server中的群集ColumnStore索引
- 12. 将集群索引应用到SQL Server 2012中的视图
- 13. SQL索引问题:为什么SQL Server更喜欢这个非集群索引到一个集群?
- 14. Sql Server执行计划,非集群索引扫描的开销
- 15. SQL Server聚集索引 - 索引问题
- 16. SQL Server中的复合聚集索引
- 17. sql server中的非聚集索引
- 18. 为什么SQL Server会选择“非群集索引扫描”?
- 19. 非集群式列存储索引磁盘空间(SQL Server 2012)
- 20. SQL Server如何命令集群索引表上的SELECT语句的结果集
- 21. 集群的Identity Server 5.1.0与SQL Server
- 22. Microsoft Sync Framework不同步从SQL Server到SQL CE的非群集索引DB
- 23. SQL Server切换群集表
- 24. SQL Server群集限制?
- 25. SQL Server地理群集
- 26. 集群索引列上的非集群索引可提高性能?
- 27. K-means sql server中的Singelton集群ssas
- 28. SQL Server的非聚集索引设计
- 29. 复合聚集索引和非聚集索引在sql server 2005
- 30. PostgreSQL中的群集和非群集索引
当然,聚集索引(像任何其他索引)不断更新。这就是为什么太多索引可能比没有索引更糟!有一个索引**总是**也承担着维护它的重任! – 2014-10-26 18:03:58