清洁的 OO 结构与.SQL性能
在PHP编程时,我总是尝试创建与数据库中的表相对应的有意义的“模型”(类)。我经常遇到以下问题:
假设我创建了一个包含两个表的数据库: 和 ,它们在我的应用程序中都有相应的模型。authors
blogs
假设我想打印所有博客以及有关作者的信息,我必须做这样的事情:
<?php
foreach ($app->getBlogs() as $blog) {
echo "<h1>" . $blog->title . "</h1>";
echo "Written by" . $blog->getAuthor()->name . "</p>";
// ... et cetera
}
?>
问题是,应用程序现在将触发 1 个 SQL 查询来获取所有博客项目,并触发 [博客项目数] 查询来获取每个作者的信息。使用简单的SQL后,我可以使用简单的查询来检索此信息:
SELECT * FROM blogs
JOIN authors ON authors.id = blogs.author
处理此类问题的最佳方法是什么:开发面向对象的应用程序,而无需执行太多无用的SQL查询。