美文网首页
mysql索引优化

mysql索引优化

作者: 一曲三月 | 来源:发表于2021-08-28 20:41 被阅读0次

    1,执行时间长,等待时间长
    原因:sql语句写的不好,没有索引或者索引失效,查询关联太多join,服务器调优和参数设置
    2,7中join理论
    内连接 select * from tablea inner join tableb on tablea.id=tableb.id;
    左连接
    select * from tablea left [outer] join tableb on tablea.id=tableb.id;
    select * from tablea left [outer] join tableb on tablea.id=tableb.id where tableb.id=null;
    右连接
    select * from tablea right[outer] join tableb on tablea.id=tableb.id;
    select * from tablea right[outer] join tableb on tablea.id=tableb.id where tablea.id=null;
    全连接(mysql不支持,mysql支持并集union,不支持差集,交集)
    select * from tablea full[outer] join tableb on tablea.id=tableb.id;
    select * from tablea full[outer] join tableb on tablea.id=tableb.id where tablea.id=null or tableb.id=null;
    3,索引
    官方定义:索引是一种高效获取数的数据结构。
    索引目的:提高查找效率,通过索引列 对数据排序,降低数据排序成本。可以简单的理解为 排好序 的 快速查找 的数据结构。
    数据库还维护着满足某种特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这种数据结构上实现高级查找算法,这种数据结构,就是索引,B树索引。
    索引文件一般也很大,一般以文件形式存在磁盘上。
    一般开发所说索引是B树(多路搜索树)结构组织树,其中聚集索引,次要索引,覆盖索引,复合索引,前文索引,唯一索引等默认是B+树索引,统称索引。除了B+树索引外,还有哈希索引等。
    索引劣势:实际上索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录,索引也是占用磁盘空间的。
    索引可以提高查询速度,却会降低更新(insert,update,delete)数据的速度,因为更新表的时候,不仅要保存数据,还要更新索引文件中新更新数据的索引。
    索引只是一个提高查询效率的因素,需要花时间研究建立优秀的索引文件,优化查询。
    3.1 索引分类
    单值索引,一个索引包含一列。
    唯一索引 ,索引列的值唯一,允许为空。
    复合索引,一个索引包含多列。
    语法:
    创建:
    create index 索引名 on table[列]
    alter table add 索引 索引名 on 列
    删除
    drop index[索引名] on table
    查看
    show index from table
    3.2 索引结构
    btree索引
    hash索引
    full-text全文索引
    R-tree索引
    3.3 索引的适用情况
    1,主键自动建立唯一索引
    2,频繁查询的字段可以建立索引
    3,外键可以建立索引
    4,频繁更新的字段不适合建立索引
    5,where 条件查询中用不到的字段不适合建立索引
    6,高并发下倾向于建立组合索引
    7,查询中排序的字段,排序字段通过索引访问将会极大提高访问速度
    8,查询中分组或统计的字段

    相关文章

      网友评论

          本文标题:mysql索引优化

          本文链接:https://www.haomeiwen.com/subject/vabubltx.html