Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Wyświetlanie rekordów
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Mam 2 tabele w bazie:

Wiadomosci:
id_w
od_kogo
do_kogo
tekst

Userzy:
id_u
nazwa

Kiedy user wysyła wiadomość (np. user o nazwie AAA i id=1 do usera BBB o id=2) to w tabeli wiadomości zostanie dodany rekord o wartości pól: od_kogo=1 i do_kogo=2:
  1. INSERT INTO wiadomosci VALUES( NULL , '1' , '2' , 'tekst' )


Moje pytanie brzmi jak wyświetlić te wiadomości tak aby zamiast id userów pojawiły się ich nazwy. Normalnie nie miałem z tym problemów bo robiłem to tak:
  1. SELECT userzy.nazwa , wiadomosci.tekst FROM wiadomosci , userzy WHERE userzy.id = wiadomosci.od_kogo
Ale tutaj jest problem bo przecież pola od_kogo i do_kogo oba są wartościami id z tabeli userzy. Jak skonsrtuować zapytanie aby SQL nie zgłupiał?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
emp
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 14
Dołączył: 12.01.2006
Skąd: Gotham City

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


Cytat(thek @ 23.08.2009, 12:27:46 ) *
Post powyżej też daje odpowiedź, ale każde podzapytanie sprawi niepotrzebny narzut czasu. A teraz wyciągnij z bazy kilkadziesiąt choćby wiadomości, gdy do każdego wiersza wywołujesz 2 podzapytania. To staje się zwyczajnie nieoptymalne i czasochłonne.


Kilkadziesiąt wiadomości to jest żadna ilość. Problemy się zaczynają przy większych liczbach. Podaj jakieś linki do artykułów o tym i do testów potwierdzających to co mówisz. Nie masz pojęcia o czym mówisz i zarzucasz mi niekompetencje (IMG:style_emoticons/default/smile.gif) Wykonałeś kiedyś w życiu jakieś testy bo ja tak w tej chwili i różnica jest żadna w postgresql. Zaras zamieszcze mój test (IMG:style_emoticons/default/smile.gif)
To co mówisz może być prawda tylko w odniesieniu do jakiejś bazy danej której to robi problem postgresql nią nie jest.

Twoje zapytanie w bazie 1000 wierszy:
Select Limit 10: 3 próby 63ms, 62ms, 47ms
Select Limit 100: 3 próby 219ms, 266ms, 266ms
Select Limit 1000: 3 próby 2234ms, 2235ms, 2203ms

Moje zapytanie w bazie 1000 wierszy:
Select Limit 10: 3 próby 63ms, 47ms, 31ms
Select Limit 100: 3 próby 234ms, 235ms, 250ms
Select Limit 1000: 3 próby 2282ms, 2281ms, 2202ms

Robiłem dla 10000 wierszy i 100000 z indeksami, bez indeksów, z sortowaniem, bez sortowania i razem różnice są żadne. Robiłem selecta z limitem 10, 100, 1000, 5000, 10000 i bez.

Ten post edytował emp 23.08.2009, 15:20:36
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 17:14