MySQL进阶一

引擎

MySQL是有多个引擎的, 不同的场景情况用不同的引擎以提升性能和灵活性.
三大最常用的引擎 :

  • InnoDB : 可靠的事务处理引擎 ,不支持全文搜索
  • MyISAM : 支持全文搜索, 不支持事务处理
  • MEMORY : 功能等同于MyISAM, 但数据存储在内存而不是磁盘, 所以速度非常快, 特别适用于临时表(temporary table)

索引

索引是用来改善搜索性能的, 不要滥用索引, 比如如对表进行INSERT、UPDATE和DELETE的操作索引反而会降低更新表的速度。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

. . .

索引有三种 :

  • 普通索引normal
  • 唯一索引unique : 它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
  • 全文索引fulltext : 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

建立索引需要遵守的规则 :

  • 选择唯一性索引
  • 为经常需要排序、分组和联合操作的字段建立索引
  • 为常作为查询条件的字段建立索引
  • 限制索引的数目
  • 尽量使用数据量少的索引
  • 尽量使用前缀来索引
  • 删除不再使用或者很少使用的索引

一些优化建议

  • like和fulltext

    like没有fulltext快, 但需要大内容的全文本搜索的时候来一发fulltext吧

  • 选择正确数据类型

    比如 : 定长的数据类型比可变长度的数据类型性能要高

  • 正确使用索引

  • 勿滥用select *语句

  • 关闭自动提交