![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Mam w bazie danych realację jeden do wielu. Mam tabelę transporty oraz miejsca. Do jednego transportu może być przypisanych kilka miejsc. Aby całość trasy (wszystkie miejsca danego transportu) wyciąnąć w zapytaniu daję GROUP CONCAT:
Niestety daje mi to czas 8 sekund dla 100 rekordow. Po usunieciu GROUP_CONCAT daje mi czas 0,03s. Co próbowałem: 1. Uproszczenie GROUP_CONCAT: (SELECT GROUP_CONCAT(M.Miejscowosc SEPARATOR '-') FROM m_miejsca AS M WHERE M.ID_transport=T.ID_t ) - nic nie daje (minimalne przyspieszenie - 1,5%) 2. Przeniesienie funkcjonalności do "STORED FUNCTION" - także nic Czy ktoś ma jakiś pomysł? -------------------- |
|
|
![]() |
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
EXPLAIN pokazuje:
Cytat id = 2 select_type = DEPENDENT SUBQUERY table = M type = ALL possible_keys = ID_transport,ID_transport_2 key = NULL key_len = NULL ref = NULL rows = 28735 Extra = Using where Podzapytanie:
Indeksy dla tabeli m_miejsca: Pierwszy: ID_transport Drugi: ID_transport + Miejsce ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:48 |