Czy można sprawdzić, jak często używano indeksu tabeli MySQL?Dowiedz się statystyki użytkowania indeksów MySQL?
Mam kilka indeksów dla tabeli i chciałbym się dowiedzieć, czy istnieją indeksy, które nie są używane przez MySQL.
Czy można sprawdzić, jak często używano indeksu tabeli MySQL?Dowiedz się statystyki użytkowania indeksów MySQL?
Mam kilka indeksów dla tabeli i chciałbym się dowiedzieć, czy istnieją indeksy, które nie są używane przez MySQL.
UWAGA : Ta odpowiedź nie jest już ważna od wersji 5.5.3!
Zobacz https://stackoverflow.com/a/43205887/1251127
Original odpowiedź poniżej.
Obecnie MySQL nie oferuje statystyk dotyczących użycia indeksu.
Jednym ze sposobów wygenerowania tych statystyk na własną rękę byłoby zarejestrowanie wszystkich zapytań (należy uważać na dodatkowe operacje wejścia/wyjścia) i przeanalizować je. Percona ma na to dobre narzędzie, pt-index-usage.
Nie sądzę, że to możliwe, indeks jest zgodny z DDL, więc jest częścią tabeli, nie wierzę, że można tworzyć statystyki o tym, ile razy indeks jest używany lub jak zostały zastosowane zapytania o grzywa do określonego wiersza. Jeśli chcesz wiedzieć więcej na temat indeksu w tabeli/kwerendy zawsze można użyć polecenia:
explain select * from table
ale to nie statystyki
Więcej informacji o wyjaśnienie here
Tak, jest. Należy zapytać Performance Schema:
select * from performance_schema.table_io_waits_summary_by_index_usage
where object_schema = 'your_schema'
count_star kolumny pokazują, ile razy każdy indeks był używany od MySQL został rozpoczęty. Jeśli dodać następujące, masz nigdy używane indeksy:
and count_star = 0
Obowiązuje dla wersji 5.5.3 lub lepszej MySQL i tylko jeśli jest włączona w my.cnf zobacz https://dev.mysql.com/doc/refman/5.5/en/performance-schema.html –
oprócz użytkownika @ user1970667 odpowiedź, można również użyć:
select * from sys.schema_unused_indexes;
aby uzyskać listę nieużywanych indeksów.
To źle, podzielam dokładnie tę samą potrzebę. –