id:数字越大越优先执行,一样大从上往下执行,id=null表示这是一个结果集
select_type:
simple:表示不需要union操作或者不包含子查询的简单select查询,有连接查询时,外层查询为simple,且只有一个
primary:一个需要union操作或者有子查询的select,位于最外层的查询,select_type=primary且只有一个
union:union连接的两个select查询,第一个查询时dervied派生表,除了第一个表外,第二个以后的表select_type都是union
dependent subquery:
索引和数据都是存储在磁盘的,只不过在加载数据时优先把索引加载到内存中
常见的存储引擎
innodb
.frm存储的是表结构
.ibd存储的是数据+index
myisam
.frm存储的是表结构
.myd存储的是数据
.myi存储的是index
内存跟磁盘交互的最小单位是页(datapage),一般是4k或者8k,由操作系统决定,我们在进行数据读取的时候一般读取页的整数倍,也是4k/8k/16k;innodb存储引擎在进行数据加载的时候一般读取的是16K的数据;
index索引使用hash表存储索引的缺点:
对hash算法要求苛刻,算法不好冲突碰撞严重导致数据不够散列,查询效率低,浪费存储空间
范围查找时挨个遍历效率低
memory存储引擎使用的支持的就是hash索引,innodb引擎支持自适应hash