现在接触到的索引
innodb,myisam 这两种索引
5.6 开始 新建表的存储引擎 都是 innodb
innodb 支持行级锁 mysiam 表锁
innodb 支持事务, mysiam 不支持
innodb 不支持全文索引, mysiam 支持全文索引
innodb 插入,更新比较快,mysiam 查询比较快
什么索引,索引有哪些分类
- 索引是一种特殊的文件,它们包含所有表记录的引用指针,相当于书本的目录。其作用就是加快检索数据的速度。
- 索引有 主键索引,唯一索引,复合索引,普通索引,全文索引
主键索引 一个表只有一个,不允许为空
唯一索引一个表可以有多个,可以允许为空
复合索引 多个列 组合在一起
全文索引 varchar char , funlltext ,但是不支持中文
索引不是越多越好,因为索引也要占空间,在更新,插入,数据会重新更新的
alter table test add index (name); 普通索引
alter table teble add unique (age); 唯一索引
alter table test add fulltext (class); 全文索引
建立索引的原则
- 一般出现在 where 查询后面的字段才建立索引
- 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。
- 尽量是数据小的建立索引 char(10), char(100)
- text.log 这种要有前缀索引
5.限制索引的数目,不是越多越好,索引会占用磁盘空间的
6.尽量扩张索引
#mysql 如何优化
1.尽量避免where like 模糊查询
2. 不用使用select *,需要列出列的名字
3.mysql 语句避免运算,减轻mysql 的压力
4. 经常查询的字段,建立合适的索引,提高查询效率