碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。这个时候,我们需要做得就是重新组织和重新生成索 引。重新生成索引将删除该索引并创建一个新索引。此过程中将删除碎片,通过使用指定的或现有的填充因子设置压缩页来回收磁盘空间,并在连续页中对索引行重 新排序(根据需要分配新页)。这样可以减少获取所请求数据所需的页读取数,从而提高磁盘性能。
可以使用下列方法重新生成聚集索引和非聚集Oracle数据库索引:
带 REBUILD 子句的 ALTER INDEX。此语句将替换 DBCC DBREINDEX 语句。
带 DROP_EXISTING 子句的 CREATE INDEX。
示例如下:
A. 重新生成索引
以下示例将重新生成单个索引。
1.USE AdventureWorks; 2.GO 3.ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee 4.REBUILD; 5.GO |
B.重新生成表的所有索引并指定选项
下面的示例指定了 ALL 关键字。这将重新生成与表相关联的所有索引。其中指定了三个选项。
1.ALTER INDEX ALL ON Production.Product 2.REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, 3.STATISTICS_NORECOMPUTE = ON); 4.GO |
2 Oracle 中的Oracle数据库索引
索引是Oracle使用的加速表中数据检索的数据库对象。
下面的情况,可以考虑使用索引:
1) 大表
2) 主键(自动索引)
3) 单键列(自动索引)
4) 外键列(自动索引)
5) 大表上WHERE子句常用的列
6) ORDER BY 或者GROUP BY子句中使用的列。
7) 至少返回表中20%行的查询
8) 不包含null值的列。