![]() |
![]() |
![]()
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:
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: 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ł? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 14 Dołączył: 12.01.2006 Skąd: Gotham City Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 17:14 |