What is an index in SQL? Can you explain or reference to understand clearly?
Where should I use an index?
Emi*_*röm 348
索引用于加速数据库中的搜索.MySQL有关于这个主题的一些很好的文档(这也与其他SQL服务器相关): http //dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
索引可用于有效地查找与查询中某些列匹配的所有行,然后仅遍历表的该子集以查找完全匹配.如果WHERE
子句中的任何列上没有索引,则SQL
服务器必须遍历整个表并检查每一行以查看它是否匹配,这可能是对大表的缓慢操作.
索引也可以是UNIQUE
索引,这意味着您不能在该列中具有重复值,或者PRIMARY KEY
某些存储引擎中的值在数据库文件中定义值的存储位置.
在MySQL中,您可以EXPLAIN
在SELECT
语句前使用,以查看您的查询是否将使用任何索引.这是解决性能问题的良好开端.在此处阅读更多内容:http:
//dev.mysql.com/doc/refman/5.0/en/explain.html
Dav*_*tch 168
聚集索引就像电话簿的内容.你可以在'Hilditch,David'打开这本书,找到所有'Hilditch'彼此相邻的所有信息.这里聚集索引的键是(lastname,firstname).
这使得聚簇索引非常适合基于基于范围的查询检索大量数据,因为所有数据都位于彼此旁边.
由于聚簇索引实际上与数据的存储方式有关,因此每个表中只有一个可能存在(尽管您可以欺骗模拟多个聚簇索引).
非聚集索引的不同之处在于您可以拥有许多索引,然后它们指向聚簇索引中的数据.你可以在电话簿的背面有一个非聚集索引(城镇,地址)
想象一下,如果你必须通过电话簿搜索住在"伦敦"的所有人 - 只有聚集索引,你必须搜索电话簿中的每一个项目,因为聚簇索引上的键是打开的(姓氏,因此,居住在伦敦的人们在整个指数中随机分散.
如果(town)上有非聚集索引,则可以更快地执行这些查询.
希望有所帮助!
Mit*_*eat 82
索引用于加速查询的性能.它通过减少必须访问/扫描的数据库数据页的数量来实现.
在SQL Server中,a 聚簇索引确定表中数据的物理顺序.每个表只能有一个聚簇索引(聚簇索引是表).表上的所有其他索引都称为非群集.
Voi*_*ice 23
总的来说索引是一个B-tree
.索引有两种类型:聚簇索引和非聚簇索引.
聚簇索引创建行的物理顺序(它可以只有一个,在大多数情况下它也是主键 - 如果在表上创建主键,则也会在此表上创建聚簇索引).
非聚簇索引也是二叉树,但它不会创建行的物理顺序.因此非聚簇索引的叶节点包含PK(如果存在)或行索引.
索引用于提高搜索速度.因为复杂性是O(log N).索引是一个非常大而有趣的话题.我可以说在大型数据库上创建索引有时候是某种艺术.
小智 20
INDEXES
- 轻松查找数据
UNIQUE INDEX
- 不允许重复值
语法 INDEX
CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
Run Code Online (Sandbox Code Playgroud)
语法 UNIQUE INDEX
CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
Run Code Online (Sandbox Code Playgroud)
nay*_*ies 12
INDEX是一种性能优化技术,可加速数据检索过程.它是一个与表(或视图)关联的持久数据结构,以便在从该表(或视图)检索数据期间提高性能.
当您的查询包含WHERE过滤器时,更具体地应用基于索引的搜索.否则,即没有WHERE过滤器的查询选择整个数据和过程.在没有INDEX的情况下搜索整个表称为表扫描.
您将以清晰可靠的方式找到Sql-Indexes的确切信息:请点击以下链接:
小智 6
如果您使用的是SQL Server,那么最好的资源之一就是安装附带的自己的联机丛书!这是我参考任何SQL Server相关主题的第一个地方.
如果它是实用的"我应该怎么做?" 那些问题,然后StackOverflow将是一个更好的问题.
此外,我还没有回来一段时间,但sqlservercentral.com曾经是那里的SQL Server相关网站之一.
首先,当我们在列上放置索引以优化查询性能时,数据库表不会自行重新排序。
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.
Run Code Online (Sandbox Code Playgroud)
B树的主要优点是其中的数据是可排序的。除此之外,B-Tree 数据结构具有时间效率,搜索、插入、删除等操作可以在对数时间内完成。
所以索引看起来像这样 -
这里,对于每一列,它将与指向该行的确切位置的数据库内部标识符(指针)进行映射。现在,如果我们运行相同的查询。
因此,索引只是将时间复杂度从 o(n) 降低到 o(log n)。
详细信息- https://pankajtanwar.in/blog/what-is-the-sorting-algorithm-behind-order-by-query-in-mysql