使用 索引 提高 MySQL 的查询 效率

索引

是一种数据库存放数据的摆放方式(数据结构);

使用索引的目的是为了提高查询数据的效率(是一种用空间/索引占用空间/换时间的方式);

使用索引的 查询效率 提高100万倍 情景

举一个例子,三个表t1t2t3,每个表中只有一个字段,但是每一个表中都有1000行记录,这些记录都是1~1000的数字。

执行以下的查找语句mysql>SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3;

在无索引的情况下处理此查询, 必须寻找 3 个表所有的组合,以便得出与 WHERE 子句相配的那些行。而可能的组合数目 为 1000×1000×1000十亿

如果对每个表进行索引,就能极大地加速查询进程,利用索引的查询处理如下。

从表 t1 中选择第一行,查看此行所包含的数据。

使用表 t2 上的索引,直接定位 t2 中与 t1 的值匹配的行。同理,利用表 t3 上的索引, 直接定位 t3 中与 t1 的值匹配的行。

扫描表 t1 的下一行并重复前面的过程,直到遍历 t1 中所有的行。

>>标题中的 100万 倍 是 春秋笔法,说明 使用 索引 的功效;

索引根据数据结构来分=>B+Tree索引/Hash索引/R-Tree索引Full-text索引(全文索引),

首先 不同的数据库引擎支持可以用的索引是不完全相同的;

其中B+Tree索引是最常用的索引,InnoDBMyISAM都支持B+Tree索引

老实说对这种 数据结构 我了解不多,

MySQL在使用上来 区分 

普通索引:

唯一索引:具有唯一约束的索引

主键索引:非空且唯一

外键索引:主外键约束的索引,MySQL搭集群的情景 不做这种 主键 关联 别人的外键 的事情;

组合索引:最左前缀

全文索引(这个我专门写过一个随笔>>>>   'MySQL InnoDB引擎 搭配 全文索引 提供 中文模糊查询 数据库版本是MySQL 5.7.6')

索引提高查询效率

是这样,首先还是写sql,能够完成功能需要这是第一步,

然后再优化 sql 或者 优化 索引

通过 explain 关键字来 查看某条SQL语句的执行方式,type如果是all 代表查询没有走索引,是通过全表扫描的方式执行;

比如:

EXPLAIN
SELECT id,NAME FROM
tb_sku
WHERE MATCH (NAME) AGAINST ('夕阳红 -男款' IN BOOLEAN MODE);

最后

索引是用空间换查询效率 , 如果一张表 会频繁的 写 数据 , 则使用索引影响写的效率

原文地址:https://www.cnblogs.com/cjd01/p/14075271.html