mysql目录结构

为了保存表结构, InnoDB 和 MyISAM 在 数据目录 下对应的数据库子目录下创建了一个专门用于 描述表结构的文件 ,文件名是这样:

  • InnoDB 5.7
    .opt 数据库结构
    .frm 表结构
    .ibd 表数据存储默认存储地(独立表空间)
    ibdata1 表数据存储存储地之一(系统表空间)
  • InnoDB 8.0
    .ibd 表结构与表数据合一了,都存在这文件中
    没有.opt了
  • MyISAM 5.7
    .frm 表结构
    .MYD 表数据
    .MYI 存的是索引
  • MyISAM 8.0
    .sdi 表结构(.frm更名成的)

索引

对于单列索引,尽量选择针对当前query过滤性更好的索引
在选择组合索引的时候,当前query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。
在选择组合索引的时候,尽量选择能够包含当前query中的where子句中更多字段的索引。
在选择组合索引的时候,如果某个字段可能出现范围查询时,尽量把这个字段放在索引次序的最后面。

失去索引的口诀:
模:模糊查询LIKE以%开头
型:数据类型错误
数:对索引字段使用内部函数
空:索引列是NULL
运:索引列进行四则运算
最:复合索引不按索引列最左开始查找
快:全表查找预计比索引更快​(数据库的判断)