说起mysql查询效率问题,就无法绕开索引问题,而innodb索引是mysql存储引擎中的重中之重,innodb索引包括“主键索引(聚集索引)”也就是实际数据和主键数据存储在一起的索引。innodb除了主键索引以外就是二级索引,二级索引叶子结点的数据区存储的是主键,mysql每个数据页面有16k大小,innodb在执行插入数据后就已经根据唯一键将数据页排好顺序,索引结构暂时不做过多解释。
那我们新建二级索引的时可以根据“近1”原则创建,创建是参考sql语句:select COUNT(DISTINCT(CONCAT(date,name)))/count(*) ;
按照创建索引涉及的列去重后的总数和数据总数做对比,结果越趋近于1,则索引查询效果越好。因为越趋近于0说明数据差距不大,所扫描的数据代价越高。
mysql查询部分包括,(1)sql执行器,(2)sql优化器。
sql优化的执行过程可以先开启sql优化日志后,到information_schema.OPTIMIZER_TRACE这个表中进行查询。