Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Pytanie obciążając serwer
Forum PHP.pl > Forum > Bazy danych > MySQL
Spirit86
Witam.
Czy ktoś mi może odpowiedzieć na pytanie, czemu pytanie typu:

  1. SELECT COUNT(xn_comments.id ) AS `comments_num` , 'more'=IF(text2<>'',1,0) AS `more`, xn_news.id, xn_news.title, xn_news.date, xn_news.text, link, source, xn_news.cat, xn_news.username, xn_categories.title AS `cat_title`
  2. FROM xn_news, xn_categories, xn_comments WHERE xn_categories.id=xn_news.cat AND xn_comments.did = xn_news.id AND xn_comments.what = 'news' GROUP BY id ORDER BY date DESC LIMIT 2


generauje się aż 0.0145 s. ? Ponadto jeżeli komentarzy jest 0 to nie wyświetla rekordów? Gdy liczy mi komentarze wpisuje COUNT (xn_comments.id) wtedy otrzymuję informacje, że w przypadku COUNT, SUM, MAX, MIN trzeba użyć GROUP by.
Ech jak innaczej napisać to pytanie? sad.gif

Pozdrawiam
Synaps
Jeśli w sekcji SELECT korzystasz z COUNT,SUM funkcji zliczających + dodatkowa kolumna np użytkownik, dzień tworzysz agregacje do któregoś z poziomów dlatego też wymagane jest stosowanie GROUP BY. Co do przyśpieszenia, to ja jestem zwolenikiem indeksów cool.gif . W twoim przykładzie, jeśli dobrze zrozumiałem idee to dodał bym na kolumnie xn_comments.what, z tego co widze to opisuje ona przynależność komenatrza do danego obiektu.
Spirit86
w sumie nie wiele zmienia wstawienie indeksu, czasy są podobne.
tak, tylko jak daje group by i tu np. id wtedy wyświetlają mi się TYLKO rekordy, które mają jakieś komentarze

bez pytania odnoszącego się do comments

wykonywanie trwa
0.00086212158203125 - 0.0010139942169189
więc prawie 2 razy szybciej!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.