2011-11-03 15 views
43

Czytałem na niektórych blogach iw niektórych artykułach związanych z optymalizacją, jak optymalizować zapytania. Przeczytałem, że muszę używać indeksów i upewnić się, że mój klucz podstawowy i klucze obce są poprawnie ustawione przy użyciu dobrego relacyjnego schematu bazy danych.MySQL explain Query understanding

Teraz mam zapytanie muszę do optymalizacji i mam to na EXPLAIN:

Using where; Using temporary; Using filesort 

używam MySQL 5.5

Wiem Używam WHERE ale nie z mojego tabeli tymczasowej, ani filesort? Co to znaczy?

+4

Wklej zapytanie. – DRapp

Odpowiedz

32

Korzystanie tymczasowe oznacza, że ​​MySQL musi używać tymczasowych tabel do przechowywania danych pośrednich obliczanych podczas wykonywania zapytania.

Korzystanie z filesort jest algorytmem sortowania, w którym MySQL nie może używać indeksu do sortowania i dlatego nie może wykonać pełnego sortowania w pamięci. Zamiast tego dzieli ten rodzaj na mniejsze części, a następnie łączy wyniki, aby uzyskać ostateczne posortowane dane.

Proszę odnieść się do http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.

Myślę, że możesz używać ORDER BY plus niektóre pochodne tabeli lub sub-kwerendy. Byłoby wspaniale, gdyby można było wkleić zapytanie i odpowiednie informacje o tabelach/indeksach oraz dane wyjściowe EXPLAIN.

+0

Dziękujemy za informacje – Ken

5

Składnia:

Explain `MySQL Query` 

Przykład:EXPLAIN SELECT * FROM categoriesG

Przykład:EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G

Wyjaśnij następnie z zapytania mysql

Better explained in details here

Powiązane problemy