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