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

Indeks MySQL spowalnia zapytanie

Wygląda na to, że article_id jest kluczem podstawowym dla tabeli artykułów.

Ponieważ grupujesz według identyfikatora artykułu, MySQL musi zwrócić rekordy w kolejności według tej kolumny, aby wykonać funkcję GROUP BY.

Możesz zobaczyć, że bez indeksu skanuje wszystkie rekordy w tabeli artykułów, ale są one przynajmniej uporządkowane według identyfikatora_artykułu, więc późniejsze sortowanie nie jest wymagane. Można tutaj zastosować optymalizację LIMIT, ponieważ jest już w porządku, może po prostu zatrzymać się po uzyskaniu pięciu wierszy.

W zapytaniu z indeksem tag.name, zamiast skanować całą tabelę artykułów, wykorzystuje indeks, ale w odniesieniu do tabeli tagów i tam zaczyna. Niestety, robiąc to, rekordy muszą być później posortowane według article.article_id w celu uzupełnienia klauzuli GROUP BY. Optymalizacja LIMIT nie może być zastosowana, ponieważ musi zwrócić cały zestaw wyników, a następnie zamówić go, aby uzyskać pierwsze 5 wierszy.

W tym przypadku MySQL po prostu źle zgaduje.

Bez klauzuli LIMIT zgaduję, że użycie indeksu jest szybsze, co być może zgadywał MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Qt - Jak zdobyć | skompilować sterownik Mysql

  2. Zostaw dołączanie, sumowanie i liczenie grup według

  3. Struktura folderów do przechowywania milionów obrazów?

  4. Jak sprawdzić, czy zmienna ma wartość NULL, a następnie ustawić ją za pomocą procedury składowanej MySQL?

  5. Prawidłowe użycie BoneCP