找出MySQL索引的使用情况统计数据?

时间:2013-01-03 17:15:54

标签: mysql indexing statistics usage-statistics

是否有可能找出使用MySQL表索引的频率?

我有一个表的几个索引,我想知道,如果存在没有被MySQL使用的indice。

4 个答案:

答案 0 :(得分:19)

是的,确实如此。您应该查询Performance Schema

and count_star = 0

count_star列显示自MySQL启动以来每个索引的使用次数。如果添加以下内容,则会获得从未使用过的索引:

if($room_number = '1'){
    $mysql_qry = "insert into patients2
    (patient_name, doctor_name, check_in_date, room_number, bed_number, notes, time) 
    values ('$patient_name', '$doctor_name', '$check_in_date', '$room_number', '$bed_number', '$notes', '$time')";
}

else if($room_number != '1'{
        echo "Error: " . $mysql_qry . "<br>" . $conn->error;
}                  

if($conn->query($mysql_qry) === TRUE) {
    echo "Insert successful";
}

答案 1 :(得分:4)

注意:自5.5.3起,此答案不再有效!

请参阅https://stackoverflow.com/a/43205887/1251127

以下原始答案。

目前,MySQL不提供有关索引使用情况的统计信息。

自己生成这些统计信息的一种方法是记录所有查询(请注意这里的额外i / o)并解析出来。 Percona有一个很好的工具,pt-index-usage

答案 2 :(得分:3)

除了@ user1970667的答案,您还可以使用:

inline

获取未使用索引的列表。

答案 3 :(得分:0)

我认为这不可能,索引与DDL一致,所以它是表的一部分,我不相信你可以统计它使用的索引的次数或者如何应用mane查询一个特定的行。如果您想了解有关表/查询中索引的更多信息,可以随时使用命令:

explain select * from table

但这不是统计数据

有关explain here

的更多信息