索引用于加快对特定列的搜索速度,但如果对索引表执行了太多的 DELETE 操作,索引就会出现碎片(不紧凑)和分布偏差(不均衡)。
索引密度反映了索引页的平均丰满度。索引分布偏差反映了与平均密度的典型差值。进行选择性估计时,分布偏差量对于优化程序十分重要。
要确定数据库中是否存在其碎片或分布偏差水平无法接受的索引,可使用 [应用程序分析向导]。请参见应用程序分析向导。
也可以使用 sa_index_fragmentation 系统过程来查看索引碎片和分布偏差的程度。例如,以下语句调用 sa_index_density 系统过程来检查 Customers 表上的索引。
CALL sa_index_density( 'Customers' ); |
TableName | TableId | IndexName | IndexID | IndexType | LeafPages | Density | Skew |
---|---|---|---|---|---|---|---|
Customers | 686 | CustKey | 0 | PKEY | 1 | 0.645992 | 1.002772 |
Customers | 686 | IX_cust_name | 1 | NUI | 1 | 0.789795 | 1.432239 |
SQL Anywhere 自动在主键上创建索引。请注意,在 sa_index_density 系统过程的结果中,这些索引的 IndexID 为 0。
当叶页数较低时,无需考虑密度和分布偏差值。密度和分布偏差值仅在叶页数较高时才变得重要。当叶页数较高时,较低的密度值表示存在碎片,而较高的分布偏差值则表示索引分布不均衡。二者都有可能是导致性能低下的因素。通过执行 REORGANIZE TABLE 语句即可解决这两个问题。请参见REORGANIZE TABLE 语句。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |