【问题标题】:How do I index a database column如何索引数据库列
【发布时间】:2010-09-05 07:05:03
【问题描述】:

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

有关索引工作原理的概述,请查看:How does database indexing work?

【问题讨论】:

标签: sql database indexing


【解决方案1】:

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

CREATE INDEX [index name] ON [table name] ( [column name] )

【讨论】:

  • 在大多数系统中,这也可以用于多列,只需添加一个逗号分隔的列名列表而不是单列。
【解决方案2】:

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

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

这对于在选择列表中具有 my_col3 并且在 where 子句中具有 my_col1my_col2 的查询非常有用。

【讨论】:

    【解决方案3】:

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

    tables.columns.column_name.createIndex()
    

    【讨论】:

      【解决方案4】:

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

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

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

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

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

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

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

      【讨论】:

        【解决方案5】:

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

        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

        【讨论】:

          【解决方案6】:
          1. CREATE INDEX name_index ON Employee (Employee_Name)

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

          【讨论】:

            【解决方案7】:

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

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

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

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

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

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

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

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

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

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

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

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-03-12
                  • 2018-02-21
                  • 1970-01-01
                  • 2021-02-10
                  • 2013-03-22
                  • 2010-10-15
                  • 1970-01-01
                  相关资源
                  最近更新 更多