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:
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 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
1. nie ma sensu tworzyć dodatkowego indeksu IDOddzialu skoro kolumna ta jest kluczem głownym (primary) Kolumna taka jest domyślnie indeksowana.
2. Nie wiem dlaczego nie wymienia żadnego indesku w possible_keys ale wydaje mi się, że najprostrzą i najprawdziwszą odpowiedzią jest taka, że nie potrzebuje żadnego indexu. Bo sam powiedz - do trzego miałby go używać, jeśli po tej pierwszej tabeli nie ma nawet sortowania? 3. Liczba przeskanowanych rekordów. Ta mogłaby się zmienić dopiero wtedy, gdybyśmy ograniczyli ilość rekodów dołączanych. Można by to zrobić przy pomocy np. dodania warunku związanego z datą (znajdującego sie teraz w select) do JOIN transakcje i być moze zmodyfikowanie wykorzystywanego przez date indexu, Pisałeś jednak, że z pewnych względów nie możesz modyfikować tej struktury, więc nie tworzyłem takiego zapytania. |
|
|
|
ktuvok USING TEMPORARY 5.11.2004, 20:58:24
DeyV Przy grupowaniu - zawsze wykorzystywane jest temp... 6.11.2004, 11:45:34
ktuvok Oczywiście, ale niestety nie dysponuję serwerem do... 6.11.2004, 21:00:43
DeyV Moja propozycja
[SQL] pobierz, plaintext SELECT O... 6.11.2004, 22:46:53
ktuvok Zastosowałem się do Twojej propozycji. Ciekawe...
... 6.11.2004, 23:53:43 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 08:03 |