• 使用 索引 提高 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);

    最后

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

  • 相关阅读:
    centos 6.5 下安装RabbitMQ-3.7.28 二进制版本
    Centos 6.5 Rabbitmq 安装和集群,镜像部署
    Vim 自动添加脚本头部信息
    vim 手动添加脚本头部信息
    Pandas系列教程(11)Pandas的索引index
    Pandas系列教程(10)Pandas的axis参数
    Pandas系列教程(9)Pandas字符串处理
    Pandas系列教程(8)pandas数据排序
    Pandas系列教程(7)Pandas的SettingWithCopyWarning
    Pandas系列教程(6)Pandas缺失值处理
  • 原文地址:https://www.cnblogs.com/cjd01/p/14075271.html
Copyright © 2020-2023  润新知