![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Prawdę mówiąc nie jestem specjalnie zaznajomiony ze składnią SQL, a postanowiłem zabrać się za optymalizację. Mam dwie tabele posts i comments. Chciałbym w jednym zapytaniu pobrać dane od tabeli posts gdzie id=1 oraz wszystkie komentarze dla tego postu. Użyłem zapytania:
Wiem, że skoro optymalizuję to powinienem zamienić * na całą strukturę, ale dałem tak dla uproszczenia. Co chcę uzyskać?
Gdzie w każdej tablicy w 'commets' są wyniki komentarza jak autor i treść. Pewnie przesadzam i wygodniej po prostu będzie skorzystać w 2 zapytań, no ale nie zaszkodzi zapytać ![]() Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 229 Pomógł: 34 Dołączył: 7.12.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pewnie przesadzam i wygodniej po prostu będzie skorzystać w 2 zapytań, no ale nie zaszkodzi zapytać Tak, czasami warto użyć dwóch zapytań, niż męczyć się ze skomplikowanym zapytaniem i pobieraniem dużej ilości nadmiarowych danych, żeby tylko nie używać dwóch. Przypuśćmy, że chcesz pobrać temat, treść, date utworzenia i autora postu z tabeli posts, oraz komentarz, nazwę autora oraz datę z tabeli comments. Jak widzisz, żeby pobrać zestaw komentarzy pobierasz dużo nadmiarowych danych z tabeli posts. Co więcej, w powyższym przykładzie pobieraz więcej danych z tabeli posts niż z samej tabeli komentarzy ![]() W przypadku dwóch zapytań natomiast pobierasz jeden wiersz z danymi postu, a z tabeli komentarzy pobierasz to, co faktycznie potrzebne jest do ich wyświetlenia (bez bałaganu z posts) Wiem, że często się mówi, żeby ograniczać ilość zapytań do minimum, ale z drugiej strony nie popadajmy w skrajności. Inaczej wygenerowanie całej strony będziemy pisać w jednym zapytaniu ![]() Pozdro |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedź
![]() A korzystając z okazji, mógłby ktoś mi polecić jakieś naprawdę dobre źródło nauki składni MySQL? Chodzi mi o zapytania bardziej złożone (chociaż przyznam, że dla mnie zastosowanie JOIN jest już złożone, gdyż wcześniej tego nie robiłem, ew. bawiłem się w ORM). Obojętnie czy strona internetowa, czy książka. Ten post edytował ... 8.08.2010, 23:19:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 18 Dołączył: 13.03.2009 Skąd: lublin Ostrzeżenie: (0%) ![]() ![]() |
warto się nauczyć SQL-a
w tym konkretnym przypadku to trochę bez znaczenia, ale jak byś miał np. policzyć ile komentarzy ma każdy post w podziale na miesiące w zestawieniu rocznym -> jedno zapytanie SQL na marginesie, to warto się przesiąść z PHP do konstrukcji SQL-owych |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Dziękuję za odpowiedź ![]() A korzystając z okazji, mógłby ktoś mi polecić jakieś naprawdę dobre źródło nauki składni MySQL? Chodzi mi o zapytania bardziej złożone (chociaż przyznam, że dla mnie zastosowanie JOIN jest już złożone, gdyż wcześniej tego nie robiłem, ew. bawiłem się w ORM). Obojętnie czy strona internetowa, czy książka. Manual MYSQL oraz fajna rzecz http://www.codinghorror.com/blog/2007/10/a...-sql-joins.html -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:52 |