首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CREATE INDEX

[Top]

CREATE INDEX

create-index-stmt: hide

expr: show

literal-value: show

raise-function: show

select-stmt: show

common-table-expression: show

compound-operator: show

join-clause: show

join-constraint: show

join-operator: show

ordering-term: show

result-column: show

table-or-subquery: show

type-name: show

signed-number: show

indexed-column: show

CREATE INDEX命令由关键字“CREATE INDEX”组成,后跟新索引的名称,关键字“ON”,先前创建的索引表的名称以及括号内的表列名称 and/or 用于索引键的表达式。如果包含可选的WHERE子句,那么索引是“partial index”。

每个列名称或表达式后面可以跟一个“ASC”或“DESC”关键字以表示排序顺序。根据数据库文件格式,排序顺序可能会也可能不会被忽略,特别是架构格式编号。“传统”模式格式(1)忽略索引排序顺序。降序索引模式格式(4)考虑了索引排序顺序。只有SQLite 3.3.0(2006-01-11)和更高版本能够理解降序索引格式。为了兼容性,默认情况下,3.3.0和3.7.9之间的SQLite版本使用传统架构格式。3.7.10版(2012-01-16)及更高版本中默认使用较新的模式格式。legacy_file_format编译指示可用于更改为任何版本的SQLite设置特定行为。

可选地跟在每个列名或表达式之后的COLLATE子句定义用于该列中的文本条目的整理序列。默认的整理顺序是在CREATE TABLE语句中为该列定义的整理顺序。或者,如果没有其他定义的整理顺序,则使用内置的BINARY整理顺序。

表达式在索引中可能不引用其他表,并且可能不使用子查询或结果可能会改变的函数(例如:random()或sqlite_version())。索引中的表达式只能引用正在索引的表中的列。表达式上的索引不适用于版本3.9.0(2015-10-14)之前的SQLite 版本。有关在CREATE INDEX语句中使用常规表达式的其他信息,请参阅Indexes On Expressions文档。

可以附加到单个表的索引数量没有任何限制。索引中的列数限制为由sqlite3_limit(SQLITE_LIMIT_COLUMN,...)设置的值。

如果在CREATE和INDEX之间出现UNIQUE关键字,则不允许重复索引条目。任何尝试插入重复条目都会导致错误。出于唯一索引的目的,所有NULL值被认为与所有其他NULL值不同,因此是唯一的。这是对SQL-92标准的两种可能的解释之一(标准中的语言是不明确的),PostgreSQL,MySQL,Firebird和Oracle的解释是其中之一。Informix和Microsoft SQL Server遵循标准的其他解释。

如果存在可选的IF NOT EXISTS子句并且存在另一个具有相同名称的索引,则该命令将变为空操作。

使用DROP INDEX命令删除索引。

扫码关注腾讯云开发者

领取腾讯云代金券