Mysql优化笔记

1. MyISAM 和 InnoDB 存储引擎特点

    ① MyISAM

        表结构,数据,索引分别有对应的存储文件

        写入数据快,按照自然顺序写入数据

        数据稳定后可以压缩数据信息

        支持全文索引

        并发性: 较低,锁表操作

   ② InnoDB:

        表结构有单独的存储文件,数据和索引共享统一个存储文件(ibdata1、*.ibd)

            ibdata1 是全部innnodb表的数据和索引的存储文件  

            *.ibd是每个innodb表的数据和索引存储文件  

        支持事务和外键

        并发性较好,行锁(操作数据表时锁定操作记录)

        Mysql5.6后InnoDB支持全文索引


2. 字段类型的选择

    ① 给数据分配的空间尽量要小一点(tinyint, smallint, mediumint, int, bigint)

            时间: datetime, date, year, time, timestamp(1970年往后的信息)

    ② 数据确定长度的尽量用char,整合为固定长度的信息

    ③ 数据最好变为整型信息存储(set, enum, 时间戳, ip地址)

3. 逆范式(有时需要违背数据库设计的三范式原则)

    为了查询快

4. 索引:

    就是把数据表的某个字段获取出来,该字段作为关键字和记录物理地址进行对应,以便快速定位记录信息

    (索引内部有算法可以快速定位信息)

    类型:主键索引(primary key), 唯一索引(unique key), 普通索引(key), 全文索引(fulltext key)

    增加和删除索引:

    增加: 在表创建的时候添加

                追加: 

                       ① alter table 表名 add primary key (字段名);

                       ② alter table 表名 add unique index [名称] (字段名)

                       ③  aleter table 表名 add index [名称](字段名)

                       ④ alter table 表名 add fulltext index [名称] (字段名);

                删除:alter table 表名 drop  索引类型 (索引名称);

 执行计划(针对查询语句起作用)  explain

    作用: 查询语句在没有执行之前查看该执行语句消耗资源情况,是否使用索引


  索引使用场合:

    where,order by, 索引覆盖(复合索引),  链接查询     

  索引使用原则:

   列独立原则, 左原则(模糊查询), 复合索引, OR原则

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页