![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 8.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich!
Mam malutki problem odnośnie zapytania. Otóż mam zapytanko:
Które wybiera jakieś tam szczegóły z tabeli osoby, a że region jest jako id to wypadałoby pobrać nazwę z innej tabeli, podobnie dla województw. Ogółem zapytanie działa (IMG:style_emoticons/default/smile.gif) Ale... To jedno zapytanie dla jak na razie 100 rekordów w tabeli osoby wykonuje się w 0,0006 sekundy (czyli dość szybko w/g mnie). Tylko zastanawiam się jak to coś zoptymalizować, tzn same zapytanie, czy muszę robić dwa razy JOIN i czy koniecznie musi być LEFT, może jakiś inny. A tak na marginesie czy w przypadku takich zapytań ma znaczenie jak ustawiłem indexy? Dla tabeli osoby mam jako indexy: wew_id jako primary, reg_id i woj_id jako pomocnicze. W razie potrzeby przedstawię strukturę wizualnie, choć wydaje mi się że jest ona dość zrozumiała (IMG:style_emoticons/default/smile.gif) Prosiłbym o pomoc, wykładowca dość poważnie ocenia optymalizację zapytań, a chciałbym to jakoś spokojnie zaliczyć (IMG:style_emoticons/default/tongue.gif) Z góry dzięki za pomoc. //EDIT Stworzyłem jeszcze takie zapytanko:
I teraz kolejne pytanie: które z tych dwóch jest lepsze? Które w przypadku dużej ilości rekordów będzie lepsze? Wiem że mogę wygenerować 100tys albo i więcej rekordów i to sprawdzić, ale jednak wolałbym poradzić się doświadczonych koderów najpierw (IMG:style_emoticons/default/wink.gif) Ten post edytował little_MASTER 25.10.2011, 11:37:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 8.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://img835.imageshack.us/img835/3771/screen1bx.jpg)
Tak wygląda tabelka z profilowania. Czy korzysta w index'ów nie wiem :/ Prosiłbym o interpretację (IMG:style_emoticons/default/smile.gif) Kiedy pierwszy raz wykonałem zapytanie trwało ono 0,0026s, za drugim i kolejnym razem 0,0006s. Czy to normalne? MySQL sam cache'uje wyniki zapytań? A i jeszcze jedno (tylko nie krzyczcie za bardzo): W bazie mam relacje n do n tzn jedna osoba może należeć do wielu typów. Mam tabele osoba i tabelę typ i pomiędzy nimi była tabela osoba_typ która przechowywała id_osoba i id_typ Pominąłem to dodając pole typ które przechowuje połączone kropką typy. Np jeżeli coś było typu 1,2 i 5 to w polu typ mam 1.2.5. W php robię implode a przy odczycie explode. Wszystko śmiga aż miło (IMG:style_emoticons/default/smile.gif) Ale co jeśli będę chciał robić wybieranie po typie? Zostaje mi tylko like, a to przy dużych ilościach rekordów zabija bazę :/ (poprawcie mnie jeśli się mylę) Czy to co zrobiłem było słuszne? Tzn czy tak się powinno robić? Muszę mieć jakąś linię obrony dla wykładowcy (IMG:style_emoticons/default/smile.gif) Ten post edytował little_MASTER 25.10.2011, 11:52:51 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 16:14 |