还有,什么时候使用手机比较合适?
当前回答
索引用于加快在数据库中的搜索速度。MySQL有一些关于这个主题的很好的文档(也适用于其他SQL服务器): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
索引可用于高效地查找查询中与某列匹配的所有行,然后仅遍历表的该子集以查找精确匹配。如果WHERE子句中的任何列上都没有索引,SQL server必须遍历整个表并检查每一行以查看是否匹配,这在大表上可能是一个缓慢的操作。
索引也可以是UNIQUE索引,这意味着在该列中不能有重复的值,也可以是PRIMARY KEY,在某些存储引擎中,PRIMARY KEY定义了值在数据库文件中的存储位置。
在MySQL中,你可以在SELECT语句前使用EXPLAIN来查看你的查询是否使用了任何索引。这是排除性能问题的良好开端。点击此处阅读更多信息: http://dev.mysql.com/doc/refman/5.0/en/explain.html
其他回答
那么,索引是如何工作的呢?
首先,当我们将索引放在列上以优化查询性能时,数据库表不会重新排序。
An index is a data structure, (most commonly its B-tree {Its balanced tree, not binary tree}) that stores the value for a specific column in a table.
b -树的主要优点是其中的数据是可排序的。与此同时,B-Tree数据结构具有时间效率,搜索、插入、删除等操作可以在对数时间内完成。
所以指数是这样的
在这里,对于每一列,它都将映射到一个数据库内部标识符(指针),该标识符指向该行的确切位置。现在,如果我们运行同样的查询。
查询执行的可视化表示
所以,索引只是把时间复杂度从o(n)降低到o(log n)
详细信息- https://pankajtanwar.in/blog/what-is-the-sorting-algorithm-behind-order-by-query-in-mysql
索引-轻松找到数据
UNIQUE INDEX -不允许重复的值
INDEX的语法
CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
UNIQUE INDEX的语法
CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
聚集索引类似于电话簿的内容。你可以在“希尔迪奇,大卫”上打开这本书,找到所有希尔迪奇酒店的所有信息。这里聚集索引的键是(lastname, firstname)。
这使得聚集索引非常适合基于范围查询检索大量数据,因为所有数据都位于彼此相邻的位置。
由于聚集索引实际上与数据的存储方式有关,所以每个表只能使用一个索引(尽管可以模拟多个聚集索引)。
非聚集索引的不同之处在于,您可以有许多索引,然后它们指向聚集索引中的数据。例如,你可以在电话簿的后面有一个非聚集索引,键值为(城镇,地址)
想象一下,如果你必须在电话簿中搜索所有住在“伦敦”的人——只有聚类索引,你必须搜索电话簿中的每一个项目,因为聚类索引上的键是on(姓,名),因此生活在伦敦的人随机分散在索引中。
如果在(town)上有非聚集索引,则可以更快地执行这些查询。
索引是与表或视图相关联的磁盘结构,可加快从表或视图检索行的速度。索引包含从表或视图中的一个或多个列构建的键。这些键存储在一个结构(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中,聚集索引决定了表中数据的物理顺序。每个表只能有一个聚集索引(聚集索引就是表)。表上的所有其他索引都称为非聚集索引。
SQL Server索引基础 SQL Server索引基础 SQL Server索引 指数基本知识 指数(维基)
推荐文章
- 如何结合日期从一个字段与时间从另一个字段- MS SQL Server
- 如何在不知道其名称的情况下删除SQL默认约束?
- SQL语法区分大小写吗?
- MySQL工作台:如何保持连接活动
- 左连接与Where子句
- 如何使用实体框架只更新一个字段?
- 在表变量上创建索引
- 为什么历史上人们使用255而不是256作为数据库字段大小?
- 如何选择记录从过去24小时使用SQL?
- 如何为查询返回的每一行执行存储过程一次?
- 按IN值列表排序
- 如何使用SQL Server 2008做多个CASE WHEN条件?
- 计数在VARCHAR字段中字符串的出现次数?
- 如何选择多行填充常量?
- 修改一个MySQL列为AUTO_INCREMENT