Skomplikowany SQL czy wiele prostych zapytań?

0

Witam,
zastanawiam się która metoda pobierania danych jest szybsza. Ustalmy, że chcemy pobrać informacje o jakimś produkcie z tylu tabel:

  • produkt
  • zdjecia
  • filmy
  • opcje
  • cennik
  • opinie
  • pliki
    (nie wchodźmy w szczegóły tabel, bo to tylko poglądowo).I teraz mamy 2 metody na przetworzenie tego (wymieniam plusy i minusy):
  1. Skomplikowanie zapytanie SQL z wieloma JOIN, a przetwarzanie danych w klasach

    • jedno zapytanie
    • dostosowywanie klas i bazy danych do składni SQL
  2. W każdej klasie odpowiadającej poszczególnym tabelom są automatycznie pobierane dane z bazy (proste zapytania SQL) i przetwarzane.

    • brak tworzenia skomplikowanej składni
    • kod dostosowany do bazy danych
    • wiele zapytań SQL

Jaka metoda jest "lepiej rozumiana" w informatyce?

2

zależnie od struktury bazy danych - to jest główna odpowiedź, teraz szczegóły:

1) mając "typowo" rozplanowaną bazę nie będziesz w stanie skutecznie jednym zapytaniem wybrać wszystkich zdjęć, opinii, plików itd. po prostu nie stworzysz tego zapytania
2) ale podziała to gdy będziesz mieć zbudowaną bazę jak reddit (3 tabele bodajże na cały serwis - przeczytaj, fajna logika, ale bałbym się tego użyć, choć skoro tam działa to czemu i u mnie nie miałoby?)

tak naprawdę przypadki:
1) zależą od struktury bazy (o czym mówiłem)
2) zależą od konkretnego przypadku: czasem stworzenie kilku zapytań do każdego elementu będzie wolniejsze (bo wybierasz elementów 100, potem do każdego kolejne 5 zapytań - daje 500), ale czasem nazbyt skomplikowane joiny, grupowanie, subzapytania spowodują, że całość będzie wolniejsza
3) powinny być przeanalizowane osobno i pod kątem zarówno wydajności jak i czytelności działań.

nie ma uniwersalnej odpowiedzi na tak ogólne pytanie

0

Dzięki wielki - czytając wpadłem na jeszcze jedno. Stałe zapytania powinny być wpisane na stałe :D Takie jak pobieranie zdjęć, filmów itd.

0

ja sobie nie wyobrażam jakbym miał np. produkt i do niego 5 zdjęć, 10 komentów, 3 pliki pobierać to jednym zapytaniem i potem dzielić. O ile np. w PHP to przysłowiowy jeden pies (bo przelecisz forem przez to co zwróci zapytanie i wyświetlisz tak jak ma być) o tyle w językach, które pozwalają bindować źródła danych do kontrolek (.NET, Delphi) pozbawiasz się całej gamy użytecznych narzędzi. Co więcej jak by miał wyglądać pojedynczy rekord zwrócony przez takie zapytanie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0