Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> USING TEMPORARY, kiedy występuje?
ktuvok
post
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

Ostrzeżenie: (0%)
-----


Czy ktoś może mi powiedzieć, jakie są zasady tworzenia przez MySQL tabel
tymczasowych przy wykonywaniu zapytań SELECT?

Spotykam się niejednokrotnie, że analiza zapytania (EXPLAIN SELECT ...)
ujawnia w kolumnie EXTRA wartość "USING TEMPORARY". Podejrzewam, że ma to
negatywny wpływ na wydajność.

Zapytanie mam takie:
  1. EXPLAIN SELECT
  2. Oddzialy.NazwaOddzialu,
  3. SUM(IF(DATE_FORMAT(Transakcje.DataWpisania,'%Y-%m-%d') = CURRENT_DATE,1,0))
  4. AS IloscTransakcjiWpisanych
  5. FROM Transakcje, Uzytkownicy, Oddzialy
  6. WHERE Transakcje.KtoWpisal = Uzytkownicy.IDUzyt AND Oddzialy.IDOddzialu = Uzytkownicy.IDOddzialu
  7. GROUP BY Oddzialy.IDOddzialu

a więc zupełnie proste... Ten IF jest nie do uniknięcia - zapytanie ma
zwracać sumę i ilość transakcji różnych typów, w powyższym przykładzie
pozostawiłem jedynie jedną kolumnę. Tak czy owak nawet powyższe zapytanie
generuje "USING TEMPORARY" dla tabeli Transakcje. Indeksy są na wszystkich
złączeniach, a mimo to MySQL nie korzysta z indeksu "KtoWpisal". Dlaczego?

MySQL 4.0.18

Pozdrawiam,
Krzysiek
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:35