关于sql:如何索引数据库列

关于sql:如何索引数据库列

How do I index a database column

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

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


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

1
CREATE INDEX [INDEX name] ON [TABLE name] ( [COLUMN name] )

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

1
CREATE nonclustered INDEX my_idx ON my_table (my_col1 ASC, my_col2 ASC) include (my_col3);

对于在选择列表中具有my_col3且where子句中具有my_col1my_col2的查询而言,这是无价的。


在SQL Server中,您可以执行以下操作:(MSDN链接到完整的选项列表。)

1
2
3
4
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,索引没有名称,它们绑定到单列:

1
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)


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

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

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

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

    我们可以在多列上创建索引,方法是使用","分隔多个列名


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


    由于大多数答案都是针对SQL数据库的,因此我是针对NOSQL数据库(尤其是MongoDB)编写的。

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

    1
    db.collection.createIndex( <KEY AND INDEX TYPE specification>, <options> )

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

    在上面的示例中,在名称上创建了单个键降序索引
    领域。

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

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


    推荐阅读