Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » 使用 UltraLite 数据库 » UltraLite 性能与优化

 

使用索引扫描

索引是一组指向表行的指针,基于一个或多个表列中数据值的顺序。索引是数据库对象。索引创建之后由 UltraLite 自动维护。可以创建一个或多个索引以提高查询性能,或者根据创建的索引类型,以确保行值保持唯一。

索引根据部分或所有列中的值对表的行进行排序。创建索引时,您选择要索引的列的顺序会成为列实际出现在索引中的顺序。因此,有策略地使用索引时,可以大大地提高索引列上的搜索性能。

UltraLite 支持以下索引。这些索引可以是单列索引或多列索引(也称为复合索引)。无法为 LONG VARCHAR 或 LONG BINARY 列创建索引。

索引 特性
主键 必需。唯一键的一个实例。只能有一个主键。索引列中的值必须唯一且不能为 NULL。
外键 1 可选。索引列中的值可以重复。空性取决于创建列时是否允许 NULL 值。外键列中的值必须存在于被引用的表中
唯一键 2 可选。索引列中的值必须唯一且不能为 NULL。
非唯一索引 可选。索引列中的值可以重复并且可以为 NULL。
唯一索引 可选。索引列中的值不能重复但可以为 NULL。

1 外键可以引用主键或唯一键。

2 也称为唯一约束。

性能提示
  • 在满足以下条件的任何列上创建索引:

    • 经常搜索列中的值
    • 查询使用列连接表
    • 列经常用于 ORDER BY、GROUP BY 或 WHERE 子句中
  • 创建复合索引时,索引的第一列应为查询中的谓语最常用到的列。

  • 确保索引不会过高地增加设备内存方面的更新维护开销。

  • 不要创建或维护不必要的索引:修改列中的数据时必须更新索引,因此也会对索引执行所有插入、更新和删除操作。

  • 在大表上创建索引。

  • 不要创建冗余索引。例如,如果您在表 T 上用列 (x,y) 创建索引,如果表 T 上已经存在使用列 (x, y, z) 创建的另一个索引,则您创建了冗余索引。

另请参见