如何索引数据库列

sql database indexing

38143 观看

9回复

49845 作者的声誉

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

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

作者: Xenph Yan 的来源 发布者: 2008 年 8 月 4 日

回应 (9)


58

11195 作者的声誉

决定

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

CREATE INDEX [index name] ON [table name] ( [column name] )
作者: John Downey 发布者: 04.08.2008 11:25

6

27342 作者的声誉

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

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

这是无价的,有一个查询my_col3在选择列表,并my_col1my_col2在where子句。

作者: Eric Z Beard 发布者: 13.08.2008 02:05

4

3378 作者的声誉

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

tables.columns.column_name.createIndex()
作者: tdc 发布者: 23.01.2012 03:13

4

2075 作者的声誉

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

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

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

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

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

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

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

作者: David Manheim 发布者: 15.06.2012 06:01

2

31 作者的声誉

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

  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

作者: Sharvari 发布者: 02.06.2015 01:38

1

197 作者的声誉

  1. CREATE INDEX name_index ON Employee (Employee_Name)

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

作者: Looking_for_answers 发布者: 17.01.2017 10:48

3

174 作者的声誉

您应该只索引执行频繁搜索/查询的列。

假设您有一个名为Students的表,您可以在其中存储StudentID,Name,Course,Grade等。您需要经常搜索StudentID列以获取有关特定学生的信息。

SELECT Name, Course, Grade

FROM Students

WHERE StudentID = 111025

您应该在该列上创建索引,因为它将加快搜索过程。您可以使用以下代码在现有列上创建索引:

CREATE INDEX IndexStudentID

ON Students (StudentID)

IndexStudentID这个名字可以是任何东西,选择对你有意义的东西。

但是,创建索引会增加数据库的开销。有很多工具可以提供帮助,例如,我正在使用SQLDbm,因为它最适合我。

作者: halcosho 发布者: 29.08.2017 09:53

0

1436 作者的声誉

由于大多数答案都是针对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/

作者: mdeora 发布者: 01.06.2018 07:05

0

8531 作者的声誉

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

作者: SriniV 发布者: 05.06.2018 10:24
32x32