![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj sobie artykuły do których linkowałem w tym poście w szczególności ten z EIOBA.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
znalazłem takie zapytanie:
wynik polecenia explain: Kod id|select_type|table |type|possible_keys |key |key_len|ref |rows|Extra 1 |SIMPLE |opis_nazwy |ALL |PRIMARY |NULL |NULL |NULL |4834|Using where; Using temporary; Using filesort 1 |SIMPLE |sklep_cennik|ref |PRIMARY,dostepnosc|PRIMARY|194 |drupal47.opis_nazwy.id_produktu|1 |Using where z tego co zdążyłem się dowiedzieć to przy tabeli opis_nazwy też powinien być wykorzystywany klucz. jak to poprawić? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
W zapytaniu zmień:
na
Wydaje mi się że:
lepiej zamienić na:
Proponuję takie zapytanie:
Widzę że tabele są łączone po PRIMARY KEY więc jest OK. Czy id_produktu to INT, czy coś innego? Poza tym indeks powinien być założony na sklep_cennik.dostepnosc. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
przy takim zapytaniu:
wygląda to tak: Kod id|select_type|table |type|possible_keys |key |key_len|ref |rows|Extra 1 |SIMPLE |sklep_cennik|ref |PRIMARY,dostepnosc|dostepnosc|8 |const |3655|Using where; Using temporary; Using filesort 1 |SIMPLE |opis_nazwy |ref |PRIMARY |PRIMARY |44 |drupal47.sklep_cennik.id_produktu|1 |Using where na sklep_cennik.dostepnosc byl zalozony klucz juz wczesniej nie orientuję się dobrze o co chodzi z tymi kluczami. id_produktu to varchar(20) i jest jako primary. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nowe zapytanie na EXPLAIN wygląda lepiej. Possible keys - są to indeksy z których baza może skorzystać. W kolumnie "key" są indeksy które faktycznie wykorzystuje. W drugim przypadku w obu tabelach używa indeksów - "dostepnosc" dla tabeli 'sklep_cennik' oraz PRIMARY dla tabeli opis_nazwy. Powinieneś sprawdzić czy zmniejszył się czas wykonywania zapytania - phpMyAdmin i podobne podają ten czas. Wykonaj zapytania w obu wersjach i porównaj. Sprawdź też czy wyniki obu zapytań są prawidłowe. Identyczne nie będą bo wybierasz rekordy losowe. Funkcja LIKE której wcześniej użyłeś wyklucza sprawdzanie po indeksie dlatego równoznaczne ='T' jest lepsze.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
to co podawałem było z mojego komputera. teraz próbuję sprawdzić to samo zapytanie na serwerze zdalnym:
Kod id|select_type|table |type|possible_keys |key |key_len|ref |rows|Extra 1 |SIMPLE |opis_nazwy |ALL |PRIMARY |NULL |NULL |NULL |2849|Using temporary; Using filesort 1 |SIMPLE |sklep_cennik|ref |PRIMARY,dostepnosc|PRIMARY|194 |drupal47.opis_nazwy.id_produktu|1 |Using where nie wiem dlaczego ale działa inaczej... |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Może jest to kwestia różnicy wersji mySql'a na obu serwerach?? Porównaj również definicję tabeli (typy danych i indeksy)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
na komputerze mam mysql 5.0.27 a na serwerze zdalnym 5.0.26. struktura i indeksy są identyczne więc to zapytanie powinno być wykonywane tak samo tu i tu.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.07.2025 - 16:16 |