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
 
Start new topic
Odpowiedzi
ktuvok
post
Post #2





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

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


Zastosowałem się do Twojej propozycji. Ciekawe...

Oczywiście kolejność skanowania tabel jest inna. Teraz pierwsza przeszukiwana jest tabela Oddzialy. Ale bez użycia indeksu IDOddzialu - dlaczego?

Tego indeksu nie ma nawet w kolumnie POSSIBLE_KEYS...

Liczba przeskanowanych rekordów jest dokładnie ta sama co poprzednio. Wygląda na to, że specjalnego przyrostu wydajności nie osiągnąłem. Ale czy ktoś potrafi wytłumaczyć, dlaczego pierwsza ze skanowanych tabel (niezależnie na którą wypadnie) zawsze przeszukiwana jest bez wykorzystania indeksu?

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: 14.10.2025 - 15:38