Estoy de acuerdo con los demás, ¡y yo fui quien diseñó y codificó la API de relaciones de tabla en Zend Framework que está utilizando!
El findDependentRowset()
es útil si ya tiene una referencia a la fila de los padres, y que podría necesidad de recuperar filas relacionadas. Esta función no es eficiente en absoluto, en comparación con una consulta que une ambas tablas. No debe llamar al findDependentRowset()
en un bucle, nunca, si el rendimiento es una prioridad en absoluto. En su lugar, escriba una consulta SQL que consista en un JOIN de ambas tablas.
Desafortunadamente, en retrospectiva, el objetivo de Zend para su Framework era la simplicidad del diseño, en lugar del rendimiento.
Si hubiera seguido trabajando en Zend, habría intentado mejorar la interfaz de la Tabla con una forma conveniente de realizar consultas unidas contra objetos Zend_Db_Table relacionados. La solución implementada después de que me fui del proyecto es construir un objeto Select y pasarlo al fetchAll()
, lo cual es terriblemente feo.
editar: En respuesta a su comentario, hice mi mejor esfuerzo para crear una solución dado un conjunto de requisitos. Me siento bien por lo que hice. Pero Zend es una empresa de herramientas IDE, así que, naturalmente, su valor está en la conveniencia de la codificación, no en el rendimiento en el tiempo de ejecución. El "desarrollo rápido de aplicaciones" puede significar desarrollar aplicaciones rápidas o desarrollar aplicaciones rápidamente. Para una empresa de herramientas, significa lo último.
Diría que una consulta que recupera x filas es * más de * x veces más rápida que x consultas, cada una recuperando 1 fila. Cuantas más filas, mayor es la diferencia. – Tomalak
si pudieras elaborar un poco sobre la parte del distaster, la respuesta podría ser la aceptada. ¡gracias! – markus
Para profundizar en lo que dice: tocará la base de datos 12 veces por separado. Eso es (al menos) una docena de llamadas a función PHP, posiblemente 12 viajes redondos a través de una red al servidor DB, 12 veces que el servidor tiene que analizar la consulta y construir un plan de ejecución, ... – flussence