Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Subzapytania. Czy to zapytanie jest wydajne?
maviozo
post 13.04.2011, 13:54:56
Post #1





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Przede wszystkim zacznę od tego, że mam świadomość istnienia darmowych skryptów forum tongue.gif piszę sobie go w celach edukacyjnych plus zaliczenie przedmiotu tongue.gif

Mam trzy tabele: user, forum, forum_posty.
To co nas interesuje z user, to tylko imie i nazwisko.
Tabela forum zawiera nazwy tematów, datę założenia, id, autora oraz czy temat jest widoczny.
Tabela forum_posty zawiera id posta, id tematu, autora, treść, datę i czy jest widoczny.

Problem:

Chcę wyświetlić listę tematów wg najnowszych postów, wraz z datą ostatniego i liczbą postów z tematu.
Urodziłem takie zapytanie:
  1. SELECT forum.topic_id AS id,nazwa,
  2. CONCAT(`user`.`imie`," ",`user`.`nazwisko`) AS `autor`,`forum`.`data` AS `data`,
  3. (SELECT COUNT(post_id) FROM `forum_posty`
  4. WHERE `forum_posty`.`topic_id`=`forum`.`topic_id`
  5. AND widoczny=1) AS liczba_postow,
  6. (SELECT `data` FROM `forum_posty`
  7. WHERE `forum_posty`.`topic_id`=`forum`.`topic_id` AND widoczny=1
  8. ORDER BY `post_id` DESC LIMIT 1) AS ostatni_post
  9. FROM `forum`
  10. LEFT JOIN `user` ON `user`.`user_id`=`autor`
  11. WHERE `aktywny`=1
  12. ORDER BY ostatni_post DESC

Zapytanie daje oczekiwany rezultat. Jednak trochę martwi mnie to, że są tutaj aż trzy zapytania. Oczywiście na ten projekt to nie problem, w sumie nie wiadomo, czy kiedykolwiek będę musiał przejmować się wydajnością, jednak zawsze warto takie rzeczy wiedzieć wink.gif Zatem jak można zrobić to wydajniej?

Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:04