此语句用于在指定表中创建索引。
CREATE [ UNIQUE ] INDEX [ index-name ] ON table-name ( ordered-column-list ) [ WITH MAX HASH SIZE integer ]
ordered-column-list : ( column-name [ ASC | DESC ], ... )
UNIQUE UNIQUE 参数确保表中不会有两行的值在所有索引列中相同。每个索引键都必须是唯一的,或者至少在一列中包含 NULL。
表的唯一约束和唯一索引是有区别的。唯一索引中的列可以为 NULL,而唯一约束的列不能为 NULL。同时,外键可以引用主键或者有唯一约束的列。但是,外键不能引用唯一索引。
ordered-column-list 列的有序列表。索引中列的值可按升序或降序排列。
WITH MAX HASH SIZE 为此索引设置散列大小(按字节计)。该值替换对数据库有效的缺省 MaxHashSize 属性。要学习缺省大小,请参见访问 UltraLite 数据库属性。
UltraLite 自动创建主键和唯一约束的索引。
索引为 UltraLite 查找特定行提供了快捷的方法,因此提高了查询性能。相反,由于必须维护索引,所以索引可能降低同步以及 INSERT、DELETE 和 UPDATE 语句的速度。
此索引自动用于改进向数据库发出的查询的性能,以及通过 ORDER BY 子句对查询进行排序。索引一旦创建后就再也不能在 SQL 语句中再次引用,除非使用 DROP INDEX 将它删除。
索引会占用数据库中的空间。此外,维护索引需要的额外操作会影响数据修改操作的性能。由于这些原因,应避免创建不能提高查询性能的索引。
当 CREATE INDEX 语句正在被处理时,UltraLite 不会处理引用该索引的请求或查询。此外,当数据库包含活动查询或未提交的事务时,您也无法执行 CREATE INDEX 语句。
UltraLite 也可使用执行计划来优化查询。请参见UltraLite 中的执行计划。
对于 UltraLite.NET 用户:除非也为所有数据对象(例如 ULDataReader)调用了 Dispose 方法,否则您将无法执行此语句。请参见Dispose 方法。
如果模式更改同时开始,则语句将不会被释放。请参见使用 DDL 语句更改模式。
以下语句在 Employees 表上创建一个由两个列组成的索引。
CREATE INDEX employee_name_index ON Employees ( Surname, GivenName ); |
以下语句在 SalesOrderItems 表上为 ProductID 列创建索引。
CREATE INDEX item_prod ON SalesOrderItems ( ProductID ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |