![]() |
![]() |
![]()
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%) ![]() ![]() |
Cześć, mam takie oto zapytanie:
Tabela m_transporty_miejsca 200 000 rekordów Tabela m_transporty 100 000 rekordów raczej małe ilości. Zapytanie wykonuje się około 0,8s (średnia z 20pomiarów). Jeśli usunę ostatni warunek w klauzuli WHERE:
a szczególnie
wówczas czas zapytania spada do 0,03 (średnia z 20pomiarów) Indexy jakie min. mam pozakładane na tabelę m_transporty to: ImportFE1: (ImportFE) ImportFE2: (ImportFE+Miejsce) ImportFE3: (ImportFE+Status+DataDostarczenia) EXPLAIN tego zapytania wskazuje, że użyty jest indeks "ImportFE1" Proszę o pomoc w optymalizacji. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 18 Dołączył: 4.09.2010 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
przydałoby się dodać do wszystkich pól aliasy tabel, skoro już dajesz to do publicznej analizy.
pole status występuje kilkukrotnie z czego ostatni raz jest wzajemnie wykluczający się z przedostatnim, więc może jednak przekonstruować to zapytanie tak, aby pole status występowało samodzielnie i nadrzędnie, czyli coś w stylu: status = a and (....) or status = b and (...) oczywiście to szkic, bo to Ty te dane rozumiesz, więc przebudowanie warunków zostawiam Tobie. jeśli jest to wykonalne, to dać potem index na status. btw to musi być varchar? oraz rozumiem struktura jest świadomie zdenormalizowana? a na marginesie, 0.8s to jest faktycznie problem? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 00:49 |