Cytat(-=Peter=- @ 10.01.2012, 23:37:57 )

Zależy jak duży chcesz robić limit, jeśli na kilka tysięcy rekordów (tak jak w przykładzie) to faktycznie zapytanie i samo przesłanie zapytania z php do mysql może zamulić.
tak gdzieś 100, 500 albo nawet 5000 produktów. A tamto zapytanie pobierające ID to chyba nie mogę zrobić przez Doctrine? Bo nie bardzo mam pomysł jak wykorzystać doctrine do czegoś takiego, zwłasza że wolałbym w tablicy asocjacyjnjej wybrać samo ID a nie ładować zbędnych kolumn produktów - nie wiadomo kiedy pamięci zabraknie.
BTW. sam pomysł ładowania wszystkiego naraz zamiast 500 małych zapytań jest chyba ok? Z moich testów wychodzi że znacznie szybciej by to szło.
Cytat(Crozin @ 10.01.2012, 23:10:30 )

SELECT p.id FROM product p INNER JOIN ... INNER JOIN ... WHERE p.category_id = :cid AND ... AND ... GROUP BY ... ORDER BY ... LIMIT ... OFFSET ...;
SELECT p.id, p.name, pr.price, pr.GROUP ... FROM product p INNER JOIN ... INNER JOIN ... WHERE p.id IN (:lista_id_z_wcześniejszego_zapytania) GROUP BY ... ORDER BY ...
To jest ogólny mechanizm pobierania danych w takim przypadku, korzystając z Doctrine wygląda to z grubsza tak samo.
Przy czym istnieją narzędzia, które automatyzują ten proces (np. odpowiedni adapter dla Zend/Paginatora), gdzie jedyne co musisz zrobić to przekazać Doctrine'owskie zapytanie (obiekt Doctrine\ORM\Query), a one wygenerują pierwsze i odpowiednio zmodyfikują drugie po czym je wykonają.
a możesz jeszcze podać linka do takiego narzędzia?