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原则