还有,什么时候使用手机比较合适?
当前回答
索引的使用有几个不同的原因。主要原因是为了加快查询速度,以便更快地获取行或对行进行排序。另一个原因是定义一个主键或唯一索引,这将保证没有其他列具有相同的值。
其他回答
聚集索引类似于电话簿的内容。你可以在“希尔迪奇,大卫”上打开这本书,找到所有希尔迪奇酒店的所有信息。这里聚集索引的键是(lastname, firstname)。
这使得聚集索引非常适合基于范围查询检索大量数据,因为所有数据都位于彼此相邻的位置。
由于聚集索引实际上与数据的存储方式有关,所以每个表只能使用一个索引(尽管可以模拟多个聚集索引)。
非聚集索引的不同之处在于,您可以有许多索引,然后它们指向聚集索引中的数据。例如,你可以在电话簿的后面有一个非聚集索引,键值为(城镇,地址)
想象一下,如果你必须在电话簿中搜索所有住在“伦敦”的人——只有聚类索引,你必须搜索电话簿中的每一个项目,因为聚类索引上的键是on(姓,名),因此生活在伦敦的人随机分散在索引中。
如果在(town)上有非聚集索引,则可以更快地执行这些查询。
首先,我们需要了解正常(没有索引)查询是如何运行的。它基本上是逐个遍历每一行,当它找到数据时就返回。参考下图。(图片来自视频)
假设查询要找到50条记录,那么作为线性搜索,它必须读取49条记录。
参考下图。(图片来自视频)
当我们应用索引时,查询将快速找到数据,而不需要读取每个数据,只需要在每次遍历中消除一半的数据,就像二进制搜索一样。mysql索引存储为b -树,其中所有数据都在叶节点中。
索引是与表或视图相关联的磁盘结构,可加快从表或视图检索行的速度。索引包含从表或视图中的一个或多个列构建的键。这些键存储在一个结构(b -树)中,使SQL Server能够快速有效地查找与键值关联的行。
当在表列上定义了PRIMARY KEY和UNIQUE约束时,会自动创建索引。例如,当您创建一个带有UNIQUE约束的表时,数据库引擎会自动创建一个非聚集索引。
如果配置了PRIMARY KEY,数据库引擎将自动创建聚集索引,除非已经存在聚集索引。当您试图在现有表上强制PRIMARY KEY约束,而该表上已经存在聚集索引时,SQL Server将使用非聚集索引强制主键。
有关索引(聚集和非聚集)的更多信息,请参考此: https://learn.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15
希望这能有所帮助!
索引的使用有几个不同的原因。主要原因是为了加快查询速度,以便更快地获取行或对行进行排序。另一个原因是定义一个主键或唯一索引,这将保证没有其他列具有相同的值。
如果你正在使用SQL Server,最好的资源之一是安装时附带的Books Online !这是第一个地方,我将参考任何SQL Server相关的主题。
如果是实际的“我应该怎么做?”之类的问题,那么StackOverflow将是一个更好的提问场所。
此外,我已经有一段时间没有回来了,但sqlservercentral.com曾经是顶级的SQL Server相关网站之一。
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 查询JSON类型内的数组元素
- 确定记录是否存在的最快方法
- 获得PostgreSQL数据库中当前连接数的正确查询
- 在SQL选择语句Order By 1的目的是什么?
- 我如何循环通过一组记录在SQL Server?
- 如何从命令行通过mysql运行一个查询?
- 外键约束可能导致循环或多条级联路径?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N
- 货币应该使用哪种数据类型?
- 如何选择每一行的列值不是独特的
- 如何改变字符集(和排序)在整个数据库?
- mySQL:: insert到表,数据从另一个表?
- 如何在Postgres中获得两个字段的MIN() ?