mysql索引怎么起作用 mysql 索引使用技巧及注意事项

解释mysql中什么是索引?它的作用是什么?索引的意义·索引在数据库中的作用相当于目录在书籍中的作用类似 , 都用来提高查找信息的速度 。·索引是一个表中所包含值的列表 , 其中注明了表中包含各个值的行所在的存储位置,使用索引查找数据时 , 先从索引对象中获得相关列的存储位置,然后再直接去其存储位置查找所需信息,这样就无需对这个表进行扫描,从而可以快速的找到所需数据 。
MySql是怎么使用的索引,在哪些情况下会使用MySql为以下这些操作使用索引:
1、为了快速查找匹配WHERE条件的行 。
2、为了从考虑的条件中消除行 。如果在多个索引之间选择一个 , 正常情况下,MySql使用找到行的最小数量的那个索引 。
3、如果表有一个multiple-column索引,任何一个索引的最左前缀可以通过使用优化器来查找行 。例如 , 如果你有一个 three-column索引在(col1, col2, col3),你能搜索索引在(col1), (col1, col2),和 (col1, col2, col3) 。
“mysql”建表时使用key建立的索引有什么用?key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的) 。包括primary key, unique key, foreign key 等 。
primary key 有两个作用 , 一是约束作用(constraint),用来规范一个存储主键和唯一性 , 但同时也在此key上建立了一个index;
unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个index;
foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
(1)我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key 。比如 create table t(id int, unique index inx_tx_id(id));--index当作了key使用 。
(2)最重要的也就是,不管如何描述,理解index是纯粹的index , 还是被当作key,当作key时则会有两种意义或起两种作用 。
MySQL索引怎么工作的在满足语句需求的情况下,尽量少的访问资源是数据库设计的重要原则,这和执行的 SQL 有直接的关系,索引问题又是 SQL 问题中出现频率最高的,常见的索引问题包括:无索引(失效)、隐式转换 。1. SQL 执行流程看一个问题,在下面这个表 T 中 , 如果我要执行 需要执行几次树的搜索操作,会扫描多少行?
这分别是 ID 字段索引树、k 字段索引树 。
这条 SQL 语句的执行流程:
1. 在 k 索引树上找到 k=3,获得 ID=3002. 回表到 ID 索引树查找 ID=300 的记录,对应 R33. 在 k 索引树找到下一个值 k=5,ID=5004. 再回到 ID 索引树找到对应 ID=500 的 R4
5. 在 k 索引树去下一个值 k=6,不符合条件,循环结束
这个过程读取了 k 索引树的三条记录,回表了两次 。因为查询结果所需要的数据只在主键索引上有 , 所以必须得回表 。所以,我们该如何通过优化索引,来避免回表呢?2. 常见索引优化2.1 覆盖索引覆盖索引,换言之就是索引要覆盖我们的查询请求,无需回表 。
如果执行的语句是 ,这样的话因为 ID 的值在 k 索引树上,就不需要回表了 。
覆盖索引可以减少树的搜索次数,显著提升查询性能,是常用的性能优化手段 。
但是,维护索引是有代价的,所以在建立冗余索引来支持覆盖索引时要权衡利弊 。
2.2 最左前缀原则
B+ 树的数据项是复合的数据结构,比如 的时候,B+ 树是按照从左到右的顺序来建立搜索树的,当 这样的数据来检索的时候,B+ 树会优先比较 name 来确定下一步的检索方向,如果 name 相同再依次比较 sex 和 age , 最后得到检索的数据 。

推荐阅读