代码之家  ›  专栏  ›  技术社区  ›  Xenph Yan

如何索引数据库列

  •  54
  • Xenph Yan  · 技术社区  · 16 年前

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

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

    8 回复  |  直到 6 年前
        1
  •  59
  •   John Downey    16 年前

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

    CREATE INDEX [index name] ON [table name] ( [column name] )
    
        2
  •  6
  •   Eray Balkanli    6 年前

    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子句中。

        3
  •  4
  •   tdc    13 年前

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

    tables.columns.column_name.createIndex()
    
        4
  •  4
  •   David Manheim    12 年前

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

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

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

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

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

    聚集索引是唯一的-每个表一个。他们不能拥有 INCLUDE D柱。

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

        5
  •  2
  •   Eray Balkanli    6 年前

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

    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
  •   Eray Balkanli    6 年前
    1. CREATE INDEX name_index ON Employee (Employee_Name)

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

        7
  •  0
  •   mdeora    6 年前

    由于大多数答案都是针对SQL数据库给出的,所以我是为NoSQL数据库编写的,特别是为MongoDB编写的。

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

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

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

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

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

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

        8
  •  0
  •   Srini V    6 年前

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