PHPでスクリプトを作成し、MsSQLデータベースを使用しています。
私のスクリプトは、製品IDのリストをループします。IDごとに、製品データのオブジェクトを作成します。製品オブジェクト内の「postage」フィールドについて、別のクエリを実行するpostageクラスを呼び出します。
$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 . '|';
}
製品がたくさんある場合は、「テーブル変数」を使用してこのプロセスを高速化できる可能性があると言われています。しかし、私はこれがどのように役立つのか、そしてこれをどのように実装するのかを理解するのに苦労しています。postageクラスの既存の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')