66

希望我能得到每个数据库服务器的答案。

有关索引如何工作的概述,请查看:数据库索引如何工作?

4

9 回答 9

70

以下是 SQL92 标准,因此大多数使用 SQL 的 RDMBS 都应该支持:

CREATE INDEX [index name] ON [table name] ( [column name] )
于 2008-08-04T11:25:14.017 回答
7

Sql Server 2005使您能够指定覆盖索引。这是一个包含叶级别其他列的数据的索引,因此您不必返回表来获取索引键中未包含的列。

create nonclustered index my_idx on my_table (my_col1 asc, my_col2 asc) include (my_col3);

这对于包含my_col3在选择列表和my_col1wheremy_col2子句中的查询来说是无价的。

于 2008-08-13T14:05:26.880 回答
4

对于 python pytables,索引没有名称,它们绑定到单个列:

tables.columns.column_name.createIndex()
于 2012-01-23T15:13:48.257 回答
4

在 SQL Server 中,您可以执行以下操作:(MSDN Link to full list of options.)

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    [ INCLUDE ( column_name [ ,...n ] ) ]
    [ WHERE <filter_predicate> ]

(忽略一些更高级的选项......)

每个索引的名称在数据库范围内必须是唯一的。

所有索引都可以有多个列,并且每一列都可以按照您想要的任何顺序进行排序。

聚集索引是唯一的 - 每个表一个。他们不能有INCLUDEd 列。

非聚集索引不是唯一的,每个表最多可以有 999 个。它们可以包含列和 where 子句。

于 2012-06-15T18:01:12.187 回答
2

要创建索引,可以使用以下内容:

  1. 在表上创建索引。允许重复值: CREATE INDEX index_name ON table_name (column_name)

  2. 在表上创建唯一索引。不允许重复值: CREATE UNIQUE INDEX index_name ON table_name (column_name)

  3. 聚集索引:CREATE CLUSTERED INDEX CL_ID ON SALES(ID);

  4. 非聚集索引:
    CREATE NONCLUSTERED INDEX NONCI_PC ON SALES(ProductCode);

有关详细信息,请参阅:http ://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server 。

于 2015-06-02T13:38:43.480 回答
1
  1. CREATE INDEX name_index ON Employee (Employee_Name)

  2. 在多列上:CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)

于 2017-01-17T10:48:15.933 回答
0

由于大多数答案都是针对 SQL 数据库给出的,因此我正在为 NOSQL 数据库,特别是 MongoDB 编写这个。

下面是使用 mongo shell 在 MongoDB 中创建索引的语法。

db.collection.createIndex( <key and index type specification>, <options> )

例子 -db.collection.createIndex( { name: -1 } )

在上面的示例中,在 name 字段上创建了一个单键降序索引。

请记住,MongoDB 索引使用 B-tree 数据结构。

我们可以在 mongodb 中创建多种类型的索引,有关更多信息,请参阅以下链接 - https://docs.mongodb.com/manual/indexes/

于 2018-06-01T19:05:49.237 回答
0

并非所有数据库都需要索引。例如:Kognitio aka WX2 引擎不提供用于索引的语法,因为数据库引擎会隐式处理它。数据通过循环分区进行,Kognitio WX2 以最简单的方式在磁盘上和磁盘上获取数据。

于 2018-06-05T10:24:47.673 回答
0

我们可以使用以下语法来创建索引。

CREATE INDEX <index_name> ON <table_name>(<column_name>)

如果我们不希望允许重复值,那么我们可以在创建索引时添加UNIQUE,如下所示

CREATE UNIQUE INDEX <index_name> ON <table_name>(<column_name>)

我们可以通过给出由 ' , '分隔的多个列名来在多个列上创建索引

于 2019-08-07T19:09:29.887 回答