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: Zarejestrowani Postów: 243 Pomógł: 0 Dołączył: 30.11.2003 Ostrzeżenie: (0%)
|
Oczywiście, ale niestety nie dysponuję serwerem dostępnym dla juzerów spoza firmy. Strukturę bazy w zakresie, który może być istotny, wklejam więc poniżej:
Będę wdzięczny za pomoc w rozwiązaniu problemu, "pałuję" się już z nim dłuższy czas i nie mam pomysłu co dalej. Dziękuję i pozdrawiam, Krzysiek |
|
|
|
ktuvok USING TEMPORARY 5.11.2004, 20:58:24
DeyV Przy grupowaniu - zawsze wykorzystywane jest temp... 6.11.2004, 11:45:34
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
DeyV 1. nie ma sensu tworzyć dodatkowego indeksu IDOddz... 7.11.2004, 00:19:00 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 10:25 |