![]() |
![]() |
![]()
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: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
pole status występuje kilkukrotnie z czego ostatni raz jest wzajemnie wykluczający się z przedostatnim Nie wyklucza się - w obydwu przypadkach jest pole status + OR 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 (...) Teraz zrobiłem tak:
i dalej nic. Ze statusem to kłopot taki, że chcę wyswietlać rekordy w różnych statusach, ale przy każdym statusie muszą być spełnione dodakowe (za każdym statusem różne) warunki. Wystarczy, że zajdzie któryś z tych warunków: 1. T.Status='gielda' AND T.Gielda='1' AND 1 AND T.Miejsce='akt 2. T.Status='przedstawiony' AND 1 AND T.Miejsce='akt 3. T.ID_przewoznik='72 AND T.Miejsce='akt (bez różnicy na status) 4. T.Status='zaksięgowane w SAP' AND T.DataDostarczenia IS NULL AND T.ID_przewoznik='72' jeśli jest to wykonalne, to dać potem index na status. btw to musi być varchar? Status ma index - tak jest varchar oraz rozumiem struktura jest świadomie zdenormalizowana? Przypadek (IMG:style_emoticons/default/sad.gif) a na marginesie, 0.8s to jest faktycznie problem? Bardzo długo (IMG:style_emoticons/default/sad.gif) 12razy dłużej niż bym chciał TomASS ma rację spróbuj jakoś przebudować tę część ze STATUS, bo jest całkowicie nieczytelana... tylko jak ? Moja wyobraźnia chyba tego nie ogarnia już:/ Wskazałeś też, że użyty został indeks ImportFE1: (ImportFE). Nie wiem jakie dane masz w columnie ImportFE, ale wydaje mi się, że to jakiś status z ograniczony do kilku wartości. dwie możliwości - 0 oraz 1 Taki indeks staje ję mało selektywny. Proponuję go rozszerzyć o T.Odległość. pole odegłość to jedna z 20 możliwośći dzięki chłopaki - pomóżcie jeszcze troszkę, może coś się uda. Ten post edytował TomASS 7.07.2011, 00:00:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 16:48 |