![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 22.06.2006 Ostrzeżenie: (0%)
|
witam,
MySql Query Browser podczas:
pokazuje że: possible_keys - stan,kategoria,typ_oferty,rocznik key - stan czas wyszukiwania około 2,5 s czasami szuka po indeksie rocznik i wtedy wyszukiwanie trwa 0,02 s Dlaczego zawsze nie wyszukuje po roczniku ? tabela:
|
|
|
|
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%)
|
co masz na myśli CZASAMI (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) TO SAMO zapytanie raz się wykonuje 0,02 sek. a innym razem 2,5 sek (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) czy to są DWA RÓŻNE ZAPYTANIA (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
pokaż je (warianty zapytań) - wtedy coś można wnioskować... a przy okazji - pola: o_1 - o_15, w_1 - w_42, foto_a - foto_i bez względu na przeznaczenie są złym pomysłem i powinny wylądować w oddzielnych tabelach |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.03.2006 Ostrzeżenie: (0%)
|
o_1 - o_15, - tylko 0 lub 1 - np jeśli ma ABS to 1, czyli lepiej w osobnej tabeli
w_1 - w_42, - taki jak pierwszy tylko inne opcje foto_a - foto_i - nazwa pliku fotek jeśli zapytanie jest takie
to używa indeksu rocznik jak to zrobić żeby używał odpowiednich indeksów ? |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%)
|
Jak to stwierdzasz, że czasem wyszukuje po indexie a czasem nie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Czas wykonania zapytania jest uzależniony od wielu czynników nie tylko od indexów, ale także obciążenia bazy w momencie zapytania czy wydajności łącza. Jeśli index po kolumnie którą szukasz jest zdefiniowany to wyszukuje po indexie. Im bardziej założone zapytanie, duża ilość rekordów oraz w nielogicznej kolejności skonstruowane tym odpowiedz bazy trwa dłużej. Sortowanie odbywa sie po kolei jak w zapytaniu, ważne jest więc dokładne zaprojektowanie bazy danych.
gino |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.03.2006 Ostrzeżenie: (0%)
|
explain mi pokazuje
possible_keys - stan,kategoria,typ_oferty,rocznik -- po jakich może key - stan - po jakich szuka |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%)
|
ok, spotkałem kiedyś osąd, że MySQL nie zawsze wybiera najlepszą możliwość w danym zapytaniu w kwestii użycia indexów. Taki urok bazy.
gino edit: posible_keys i key pozwala nam dowiedzieć się z jakich innych indeksów możemy próbować korzystać a jak zrobi MySQL to już inna sprawa, j.w. Ten post edytował gino 26.02.2008, 18:32:31 |
|
|
|
Post
#7
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%)
|
jeżeli masz dużo zapytań z użyciem kilku pól ( u ciebie: rocznik, typ_oferty, kategoria, stan) a nie potrzebujesz super wydajności przy INSERT i UPDATE to rozważyłbym założenie dodatkowego indeksu wielopolowego (na te wszystkie pola po których szukasz) - to powinno ożywić twoje SELECT...
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.03.2006 Ostrzeżenie: (0%)
|
Czy mogę zrobić indeks wielopolowy zawierający np 15 pozycji, bo po tych pozycja będzie wyszukiwanie, czasami po dwóch a czasami po 3,4,5,6,7,8 itd.
użytkownik będzie miał formularz na stronie i on wybiera to co potrzebuje, więc ja to objąć w sensowną całość ? jeśli zawsze w wyszukiwani były by 4 pola to ok, ale to się zmienia np: marka,model,typ id_dane,stan, rocznik,cena,region,przebieg, data_aktywacji, kategoria, typ_oferty, osobowe_marka.id, rocznik, rocznik czy to nie pogorszy wyszukiwania ? |
|
|
|
Post
#9
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%)
|
na pewno powiększy mocno bazę, na pewno spowolni insert i update - a czy przyspieszy select ? spróbuj - załóż indeks, przetestuj wydajność - my nie mamy tej bazy ani tego formularza - jak mamy ci to sprawdzić... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
wg mnie problem może być głębszy - niewydajna struktura bazy przy dużej ilości danych i skomplikowanych zapytaniach... wtedy żadne indeksy nie pomogą jeżeli nie zmienisz schematu bazy... Ten post edytował nevt 28.02.2008, 21:06:26 |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 20:39 |