desc table_name
show create tableshow index from table_namecardinality列不重复值的个数 预估的值 通过采样的形式select count(1)from table_name;5.5 show create table 会触发采样 5.6 关闭掉 analyze table 触发采样低选择性的不用创建索引 高选择性的创建索引复合索引select * from xxx where a=?会使用索引select * from xxx where a=? and b=?会使用索引(a,b)复合索引对a和ab排序select * from xxx where b=?不会用到索引selet *from xxx where a=? or b=?不会用到如图1
通过执行计划explainselect *from xxx where a=?(a,b,c)\cselect *from xxx where a=?and b=?(a,b,c)\cselect *from xxx where a=?and b=? and c=?(a,b,c)\cselect *from xxx where a=?and c=?(a,b,c)\ca=?and c=?只有a排序 其他的都是过滤b c也是不排序的索引为什么可以快速定位数据,是因为索引是排序的,通过b+树查找是很快的select * from limit 10;是随机取的10条数据information_schema.key_column_usage数据字典1 查看索引carinality存放的元数据表2 查看线上数据库索引cardinality的值,判断索引创建是否合理,并写出这条sql语句
explain命令
显示sql语句的执行计划5.6版本支持dml语句5.6版本开始支持json格式的输出log_queries_not_using_indexes参数desc sql语句show warningsdesc format=json sql语句