[英]Two queries vs one query, performance
在PHP + MySQL + PDO中,这样做会慢很多吗
比只是
后者只是一个查询,因此显然更快。 前者虽然使代码更整洁(因为通常也事先知道项的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;
}
您应该设计查询,以便在WHERE子句中使用的字段具有正确的键和索引设置,并且只能使用一个查询来选择它们。
为什么不创建一个按ID获取项目数据的查询,并在ID上添加索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.