This was my point when I posted
http://groups.google.com/group/cake-php/browse_thread/thread/b73a9a23b593c837/f0a4ae54e8892e45?hl=en#f0a4ae54e8892e45

Anyways, I don't suppose you will need a level 2 recursive call based
on the Model you've shown. But http://bakery.cakephp.org/articles/view/185
should help greatly. :)

On Apr 10, 12:54 am, "barduck" <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I was looking at my SQL debug logs and seeing a lot of redundant
> unnecessary queries which I don't think should be there at all. I am
> using the nightly build of 1.2 from couple of days ago but I was
> seeing this with 1.2 for quite a while.
>
> So I created a very basic scenario and this is still reproducing, just
> two DB tables and two cake models:
>
> class Category extends AppModel
> {
>         var $name = 'Category';
>
> }
>
> class Product extends AppModel
> {
>         var $name = 'Product';
>
>         var $belongsTo = array('Category');
>
>         var $recursive = 2;
>
> }
>
> In my products controller, I want to get all products:
>
> $products = $this->Product->findAll();
>
> And this is what I see in the SQL log:
>
> 1       DESC `products`         3       3       5
> 2       DESC `categories`               2       2       5
> 3       SELECT `Product`.`id`, `Product`.`name`, `Product`.`category_id`,
> `Category`.`id`, `Category`.` name` FROM `products` AS `Product` LEFT
> JOIN `categories` AS `Category` ON (`Product`.`category_id` =
> `Category`.`id`) WHERE 1 = 1            12      12      1
> 4       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 1            1       1       1
> 5       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 1            1       1       0
> 6       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 1            1       1       0
> 7       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 1            1       1       0
> 8       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       0
> 9       SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       1
> 10      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       0
> 11      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       3
> 12      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       1
> 13      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 3            1       1       1
> 14      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 2            1       1       1
> 15      SELECT `Category`.`id`, `Category`.` name` FROM `categories` AS
> `Category` WHERE `Category`.`id` = 2            1       1       0
>
> What are all the SELECT queries from categories table doing there?
> They are already included in the main query with the LEFT JOIN and why
> is there a separate query for each product row even if the same
> category was already fetched?
>
> This is just a sample DB, in my real scenario with many more
> associations, a findAll() query generates over 1000 redundant queries
> which takes some time to execute.
>
> Can anyone shed some light on this?
>
> Thanks.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to