8.MySQL中使用索引一定有效吗?如何排查索引效果?

MySQL中使用索引不一定有效。
我们有时候在查询的时候不包含索引列或者是查询条件比较复杂且索引匹配顺序有问题。这都会导致索引无效
对于小表,我们有时候可能会采取全表扫描的方式,而不是索引搜索的方式,因为确实有时候全表扫描消耗的资源是比索引搜索小的。
对于MySQL具体是使用全表扫描还是使用索引搜索,这个是需要MySQL去评估CPU和IO的最终确定是使用全表扫描还是索引搜索的。但是有时候由于计算的错误错误点:但是有时候由于成本计算失误,可能会导致我们不使用索引搜索。
那么我们如何排查索引效果呢?
我们可以使用explain,在查询时加上explain,我们就可以获得是否使用索引,索引的名字错误点:使用的什么索引,搜索行数错误点:影响行数等信息
types:这个类型表示是否使用索引,有三个值分别为"all"、“range”、“index”,如果是"all"那么就是没使用索引搜索,如果是"range"或者"index"那么就是使用了索引搜索。
keys:这个类型表示的是索引的名字这个类型表示使用什么了索引,如果使用了索引那么就会直接显示索引的名字,如果没有使用索引那么就会显示null
row:这个类型是表示搜索的行数错误点:这个字段表示影响了多少行

你可能感兴趣的:(后端面试集训营,mysql,android,数据库)