Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zinterpretować dane wyjściowe MySQL EXPLAIN?

Odpowiadając na Twoje pytania:

  • Czy possible_keys indeksy, których MySQL może chcieć użyć i keys jakie indeksy faktycznie używa MySQL? Tak, to jest poprawne.

  • Dlaczego indeks to index_status_mit_spam nieużywany? W zapytaniu kolumny mają taką samą kolejność jak w indeksie. SQL używa statystyk dotyczących indeksów tabeli aby określić, którego indeksu użyć. Kolejność pól w instrukcji select NIE ma żadnego wpływu na którym indeksie użyć. Statystyki dotyczące indeksów zawierają informacje takie jak unikalność indeksu i inne rzeczy. Prawdopodobnie zostanie użytych więcej unikalnych indeksów. Przeczytaj więcej na ten temat tutaj:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html lub tutaj:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Czynniki te określają, w jaki sposób MySQL wybierze jeden indeks używać. Będzie używać tylko JEDNEGO indeksu .

  • Dlaczego indeks index_datum nie używane dla ORDER BY ? MySQL użyje tylko jednego indeksu, a nie dwóch podczas zapytania, ponieważ użycie drugiego indeksu jeszcze bardziej spowolni zapytanie. Czytanie indeksu NIE jest czytaniem tabeli. Wiąże się to z wydajnością operacyjną zapytania. Oto odpowiedzi, które mogą wyjaśnić niektóre pojęcia:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Lub Dodanie klauzuli limit do zapytania MySQL znacznie je spowalnia Lub Indeksy MySQL i kiedy grupować je . Te odpowiedzi zawierają wiele szczegółów, które pomogą Ci zrozumieć indeksowanie MySQL.

  • Jak mogę zoptymalizować moje indeksy tabel lub zapytanie? (Powyższe zapytanie potrzebuje do 3 sekund przy około milionie wpisów w tabeli). Cóż, jest tutaj sortowanie plików, które prawdopodobnie Cię spowalnia. Może się zdarzyć, że tabela ma zbyt wiele indeksów, a MySQL wybiera zły.

Musisz zrozumieć, że indeksy przyspieszają odczyty i spowalniają zapisy do tabel. Dlatego samo dodawanie indeksów nie zawsze jest dobrym pomysłem. Powyższe odpowiedzi i wskazówki powinny pomóc w uzyskaniu solidnego zrozumienia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupa MySQL w określonych odstępach 24-godzinnych

  2. Jak pobrać wiele wierszy z bazy danych w PHP

  3. Jak wstawić bardzo dużą liczbę rekordów do bazy danych MySql tak szybko, jak to możliwe?

  4. bardzo duża tabela mysql i raportowanie

  5. przechowywanie danych JSON w mysql