我在 PHP 中编写脚本并使用 MsSQL 数据库。
我的脚本循环通过产品 ID 列表。对于每个 id,它都会创建一个产品数据对象。对于产品对象中的“邮资”字段,我调用了一个执行另一个查询的邮资类。
$products = $productsObj->getProducts($i, $limit);
foreach($products as $product)
{
echo $product['productName'] . '|';
echo $product['productDescription'] . '|';
echo $product['productPrice'] . '|';
$postage = $postageObj->getPostageCostforProduct(1, $product['weight'], $product['productPrice']);
echo $postage . '|';
}
有人告诉我,如果有很多产品,我可能会使用“表变量”来加速这个过程。但是,我很难理解这将如何提供帮助以及如何实现这一点。我会用表变量查询替换邮资类中现有的邮资查询吗?如果是这样,这究竟是如何工作并帮助服务器加载的?
编辑
获取产品 ID 列表的查询是:
SELECT * FROM FROM products WHERE category='$this->cat'
然后我遍历它们中的每一个并为每个产品创建和对象。获取对象产品数据的查询是:
SELECT p.id as prod_id, * FROM products AS p WITH(NOLOCK)
WHERE (p.id = '$this->prod_id')
显示数据时,我调用以下查询来获取邮资:
SELECT Postage.postageName, Postage.Description AS postagedesc, Postage.id, Postage.qtyPer, Postage.pricePer, Postage.groupID, Groups.country_filter FROM Postage
LEFT OUTER JOIN Groups ON Postage.groupID = Groups.id
WHERE (Postage.minimumQty <= '$qty') AND (PostageRules.maximumQty >= '$qty')
(Postage.minPrice <= '$price') AND (Postage.maxPrice >= '$price')