什么是SQL中的索引?

什么是SQL中的索引 ? 你能解释清楚吗?

我应该在哪里使用索引?

索引用于加快数据库中的search速度。 MySQL有关于这个主题的一些很好的文档(这也与其他SQL服务器有关): http : //dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

可以使用索引有效地查找与查询中的某个列匹配的所有行,然后遍历该表的唯一子集以查找完全匹配。 如果WHERE子句中没有任何列的索引,则SQL Server必须遍历整个表并检查每一行以查看它是否匹配,这对于大型表可能是一个缓慢的操作。

索引也可以是一个UNIQUE索引,这意味着在该列中不能有重复的值,或者在某些存储引擎中定义的PRIMARY KEY定义数据库文件中存储值的位置。

在MySQL中,您可以在SELECT语句前面使用EXPLAIN来查看您的查询是否将使用任何索引。 这是解决性能问题的好开始。 阅读更多: http : //dev.mysql.com/doc/refman/5.0/en/explain.html

聚集索引就像电话簿的内容。 你可以在'Hilditch,David'打开这本书,find所有'Hilditch'右边的所有信息。 这里聚簇索引的键是(姓氏,名字)。

这使得聚集索引非常适合基于基于范围的查询检索大量数据,因为所有数据都是彼此相邻的。

由于聚集索引实际上与数据存储方式有关,所以每个表只能有一个(尽pipe你可以作弊以模拟多个聚集索引)。

非聚集索引是不同的,因为您可以有很多索引,然后他们指向聚集索引中的数据。 你可以有一个非聚集索引在一个电话簿的背面,这是键(镇,地址)

想象一下,如果您必须通过电话簿search所有居住在“伦敦”的人 – 只有聚集索引,您必须search电话簿中的每个项目,因为聚合索引中的键已打开(姓氏,名字),结果伦敦的居民在整个指数中随机分散。

如果你在(城镇)有一个非聚集索引,那么这些查询可以更快地执行。

希望有所帮助!

索引用于加快查询的性能。 它通过减less必须访问/扫描的数据库数据页面的数量来实现这一点。

在SQL Server中, 聚集索引确定表中数据的物理顺序。 每个表只能有一个聚簇索引(聚簇索引是表)。 一张桌子上的所有其他索引被称为非集群。

  • SQL Server索引基础

  • SQL Server索引:基础知识

  • SQL Server索引

  • 索引基础

  • 索引(wiki)

一个非常好的比喻就是把一个数据库索引当作一本书的索引。 如果您有一本关于国家的书,并且您正在寻找印度,那么为什么要翻阅整本书 – 这相当于数据库术语中的全表扫描 – 当您可以直接转到书,这将告诉你确切的网页,你可以find关于印度的信息。 同样,由于书籍索引包含页码,因此数据库索引包含指向包含您在SQL中search的值的行的指针。

更多在这里

索引都是关于快速查找数据的 。 数据库中的索引类似于您在书中find的索引。 如果一本书有一个索引,并且我要求你在这本书中find一章,那么你可以在索引的帮助下很快find它。 另一方面,如果这本书没有索引,你将不得不花费更多的时间,从书的开头到结尾看每一页。 以类似的方式,数据库中的索引可以帮助查询快速查找数据。 如果你是新手,下面的video,可以是非常有用的。 事实上,我从他们身上学到了很多东西。

索引基础
聚集索引和非聚集索引
唯一和非唯一的索引
指标的优缺点

一般来说索引是一棵B-tree 。 有两种types的索引:聚簇和非聚簇。

聚集索引创build行的物理顺序(它可以只有一个,在大多数情况下,它也是一个主键 – 如果你在表上创build主键,你也可以在这个表上创build聚集索引)。

非聚簇索引也是二叉树,但不创build行的物理顺序。 所以非聚集索引的叶节点包含PK(如果存在的话)或行索引。

索引用于提高search速度。 因为复杂度是O(log N)。 索引是非常大和有趣的话题。 我可以说在大型数据库上创build索引有时候是某种艺术。

INDEXES – 轻松查找数据

UNIQUE INDEX – 重复的值是不允许的

INDEX语法

 CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

UNIQUE INDEX语法

 CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

INDEX是一种性能优化技术,可加速数据检索过程。 它是与表(或视图)相关联的持久数据结构,以便在从该表(或视图)检索数据期间提高性能。

当您的查询包含WHEREfilter时,基于索引的search更具体。 否则,即没有WHEREfilter的查询select整个数据和过程。 在没有INDEX的情况下search整个表格称为表格扫描。

您将以清晰可靠的方式findSql-Indexes的确切信息:请点击以下链接:

  1. 对于cocnept明智的理解: http ://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. 为了实现方面的理解: http : //dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html

索引用于几个不同的原因。 主要原因是加快查询速度,以便更快地获取行或sorting。 另一个原因是定义一个主键或唯一索引,这将保证没有其他列具有相同的值。

如果您使用的是SQL Server,最好的资源之一就是它自带的Books Online,它随安装而来! 这是第一个我会参考任何SQL Server相关主题的地方。

如果这是实际的“我该怎么做?” 问题的种类,然后StackOverflow将是一个更好的地方问。

另外,我还没有回来一段时间,但sqlservercentral.com曾经是最重要的SQL Server相关的网站之一。