【发布时间】:2009-05-13 19:53:55
【问题描述】:
在PHP+MySQL+PDO中,会不会慢很多
- 按名称获取项目 ID
- 按 ID 获取商品数据
不仅仅是
- 按名称获取商品数据
后者只是一个查询,所以显然更快。前者使代码更简洁(因为项目的 ID 通常也是事先知道的),所以如果性能差异足够小会更好。
我正在使用的代码:
公共函数 actionView() {
// read http request
...
// get item
$itemModel = new Rust_Model_Item();
try {
$id = $itemModel->getItemIdByUrlTitle($urltitle);
$item = $itemModel->getItem($id); // lots of data
} catch (Rust_Model_Item_NotFoundException $e) {
throw new FastMVC_Web_Error(404, 'Item not found');
}
...
}
公共函数 getItem($id) {
$item = $this->getItemBasics($id);
$catModel = new Rust_Model_Category();
$item['category'] = $catModel->getById($item['category_id']);
$ratingModel = new Rust_Model_Rating();
$item['rating'] = $ratingModel->getForItem($id);
$pageModel = new Rust_Model_Page();
$item['pages'] = $pageModel->getListForItem($id);
$tagModel = new Rust_Model_Tag();
$item['tags'] = $tagModel->getForItem($id);
return $item;
}
【问题讨论】:
-
不管“参考数据”如何,您都应该能够使用来自其他表和子查询的 JOINS 来组装所有信息。查找诸如 SELECT foo FROM bar WHERE foo IN(SELECT baz FROM boo) 之类的内容
-
我很精通 SQL,这不是问题。并不是我不知道单个查询是什么,而是它会对我的设计产生负面影响。
标签: php mysql performance oop