2013-01-03 10 views

Odpowiedz

4

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.

+0

To źle, podzielam dokładnie tę samą potrzebę. –

1

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

6

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 
+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 –

1

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.

Powiązane problemy