Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytań, Jedno zapytanie pobierające wszystkie rekordy, czy kilka z ograniczen
Ryder
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Hej,

Mam pytanie co jest bardziej optymalne jedno zapytanie pobierające wszystkie rekordy czy kilka zapytań z klauzulą WHERE.
Przykładowa tabela (liczba rekordów <1000)

article {
- id
- title
- link
- content
- public
- parent
}

Np.
1 | artykuł1 | artykul1 | trest_artykułu1 | 1 | 0
2 | artykuł2 | artykul2 | trest_artykułu2 | 1 | 0
3 | artykuł1-1 | artykul1-1 | trest_artykułu1-1 | 1 | 1
...

Chce pobrać dane, żeby wygenerować menu, submenu, i wyświetlić aktywny artykuł.
Która opcja jest najbardziej korzystna dla niewielkiej strony.

Opcja 1:
Pobranie 1 zapytaniem wszystkich rekordów
  1. SELECT * FROM article;

Zapisanie danych do tabeli i później operowanie na tej tabeli (foreach, if), żeby wydobyć interesujące dane


Opcja 2
a.) Pobranie menu (Tylko artykuły z parent = 0)
  1. SELECT * FROM article WHERE parent = 0;


b.) Pobranie submenu z podartykułów dla aktywnego artykułu (GET['id'])
  1. SELECT * FROM article WHERE parent = GET['id'];


c.) Pobranie konkretnej tresci artykułu (GET['id'])
  1. SELECT * FROM article WHERE id = GET['id'];


Opcja 3
Jakieś inne rozwiązania (podzapytania, złączenia, itp)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




pobieranie wszystkich rekordow tylko po to by pobrac pare to zły pomysł. Przeciez liczba artykułów bedzie z czasem coraz wieksza.

mozesz pobrac te artykuły abc w jednym zapytaniu poprzez OR w warunku lub mozesz uzyc UNION.
Mozesz te abc rozbic tez na 3 jak to pokazales. Pamietaj jednak, ze a) mozesz spokojnie cachowac. Nie potrzeby za kazdym razem latac do bazy po to.
Na upartego b i c tez mozna cachowac, choc bardziej raczej b
Go to the top of the page
+Quote Post
Pilsener
post
Post #3





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


A mi się wydaje, że Twoim problemem jest zła organizacja danych, a nie zapytań (wszystko w jednej tabeli). Tworząc model danych należy brać pod uwagę nie tylko "suche" dane, ale także w jaki sposób będą używane, czasami warto trochę skomplikować dodawanie i edycję, by wyświetlanie działało szybciej i sprawniej (np. aktualizować licznik artykułów przy każdej akcji dodania/usunięcia zamiast wykonywać count(*) dla każdego żądania).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:30