Cakephpが分からない(そもそもhas_manyがオトモダチになれてない)

SELECT `Docs`.`id`, `Docs`.`p_id`, `Docs`.`created`
FROM `documents` AS `Docs`
WHERE `Docs`.`p_id` IN (3, 4) 

has_many使ってたらfindAllしたデータmodelに対してこんな風にassociationかかってて、
inして帰ってきたリストって勝手にマッピングされてないよね、
とか思って調べてみた.


まず、has_many周りの処理は
libs/model/datasources/dbo_source.php
line: 725
queryAssociation(&$model, &$linkModel, $type, $association, $assocData, &$queryData, $external = false, &$resultSet, $recursive, $stack)
↑この関数で色々やってた。


で、気になるinで取ってきたデータについては
libs/model/datasources/dbo_source.php
line: 930
function __mergeHasMany(&$resultSet, $merge, $association, &$model, &$linkModel)
この関数で全部ループさせながら処理させていたみたい。
確かにこれなら、has_manyされてるデータ増えたらパフォーマンスよくなるのかもだけど、
これってどうなんだろう。
もしくはこれがでふぁくとすたんだーど?
has_manyの中身とか見たことなかったからわからなかったけど。。。
ちょっとこわい。