Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie dziala bardzo wolno
Forum PHP.pl > Forum > Bazy danych > MySQL
abiku
2 proste tabelki:
"task"
`tas_id` int(11) NOT NULL AUTO_INCREMENT,
`tas_name` varchar(140),
PRIMARY KEY (`tas_id`)

i

"comments" (
`tco_id` int(11) NOT NULL AUTO_INCREMENT,
`tco_tas_id` int(11) DEFAULT NULL,
`tco_status_id` int(11) DEFAULT NULL COMMENT 'select__y__Status__tracker_statuses__tst_id__tst_name',
`tco_comment` text COLLATE utf8_bin COMMENT 'Comment__n',
PRIMARY KEY (`tco_id`)

w tabelce tas mam zadania, w drugiej komentarze do nich. pole tco_tas_id laczy sie z tas_id.
w tabeli comments mam pole tco_status_id. w miare dodawania nowych komentarzy do danego zadania status moze sie zmieniac.
i teraz:
chce wyswietlic liste wszystkich zadan wyswietlajac tas_name i ostatni status z tabeli comments.
pisze takie zapytanie:
"select t.tas_name, com.tco_status_id
from task t inner join comments com
on t.tas_id = com.tco_tas_id
where
com.tco_id = (select MAX(tco_id) from comments where tco_tas_id = t.tas_id)"
Dziala to poprawnie, problem w tym ze baaardo wolno. juz przy 2tys recordow w tabeli task i 5tys w comments strasznie obciaza procesor.
co tutaj robie zle, jak to lepiej napisac?

z gory dziekuje za pomoc
trucksweb
zrob sobie EXPLAIN i ustaw odpowiednio indexy
kosmowariat
  1. SELECT t.tas_name, com.tco_status_id
  2. FROM task t LEFT JOIN comments AS com
  3. ON t.tas_id = com.tco_tas_id
  4. ORDER BY com.tco_id DESC
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.