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