[英]How do I index a database column
以下是 SQL92 标准,因此大多数使用 SQL 的 RDMBS 应该支持:
CREATE INDEX [index name] ON [table name] ( [column name] )
Sql Server 2005
使您能够指定覆盖索引。 这是一个包含来自叶级别其他列的数据的索引,因此您不必返回表来获取未包含在索引键中的列。
create nonclustered index my_idx on my_table (my_col1 asc, my_col2 asc) include (my_col3);
这是无价的,有一个查询my_col3
在选择列表中,并my_col1
和my_col2
的where子句。
在 SQL Server 中,您可以执行以下操作:(指向完整选项列表的MSDN 链接。)
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON <object> ( column [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WHERE <filter_predicate> ]
(忽略一些更高级的选项......)
每个索引的名称在数据库范围内必须是唯一的。
所有索引都可以有多个列,并且可以按您想要的任何顺序对每一列进行排序。
聚集索引是唯一的 - 每个表一个。 他们不能有INCLUDE
d 列。
非聚集索引不是唯一的,每个表最多可以有 999 个。 它们可以包含列和 where 子句。
对于 python pytables,索引没有名称,它们绑定到单个列:
tables.columns.column_name.createIndex()
可以使用以下内容来创建索引:
在表上创建索引。 允许重复值: CREATE INDEX index_name ON table_name (column_name)
在表上创建唯一索引。 不允许重复值: CREATE UNIQUE INDEX index_name ON table_name (column_name)
聚集索引: CREATE CLUSTERED INDEX CL_ID ON SALES(ID);
CREATE NONCLUSTERED INDEX NONCI_PC ON SALES(ProductCode);
有关详细信息,请参阅: http : //www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server 。
CREATE INDEX name_index ON Employee (Employee_Name)
在多列上: CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)
由于大多数答案是针对 SQL 数据库给出的,因此我正在为 NOSQL 数据库(特别是 MongoDB)编写此内容。
以下是使用 mongo shell 在 MongoDB 中创建索引的语法。
db.collection.createIndex( <key and index type specification>, <options> )
示例 - db.collection.createIndex( { name: -1 } )
在上面的示例中,在 name 字段上创建了一个单键降序索引。
请记住,MongoDB 索引使用 B 树数据结构。
我们可以在 mongodb 中创建多种类型的索引,有关更多信息,请参阅以下链接 - https://docs.mongodb.com/manual/indexes/
并非所有数据库都需要索引。 例如: Kognitio 又名 WX2 引擎不提供索引语法,因为数据库引擎会隐式地处理它。 数据通过循环分区处理,而 Kognitio WX2 以最简单的方式获取磁盘上和磁盘外的数据。
我们可以使用以下语法来创建索引。
CREATE INDEX <index_name> ON <table_name>(<column_name>)
如果我们不希望允许重复值,那么我们可以在创建索引时添加UNIQUE如下
CREATE UNIQUE INDEX <index_name> ON <table_name>(<column_name>)
我们可以通过给出由 ' , ' 分隔的多个列名来在多个列上创建索引
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.