概要:
各製品に存在する場合と存在しない場合がある、製品とユーザーのコメントのページがあります。1 つのテーブルは製品の詳細 (products_master) を保持し、1 つのテーブルは表示される製品を決定します (shoppingfeed)。クエリ #1 から各製品をループして出力すると、クエリ #2 が実行され、現在表示されている製品に関連するコメントがクエリ #1 から取得されます。
問題: これはすべて動作しますが、遅いです! これを 1 回実行できる 1 つの最適化されたクエリに結合し、それをループする方法があるかどうかを考えています... またはこれを高速化する他のアイデア.
クエリ #1
SELECT shoppingfeed.action_date,
products_master.name,
products_master.image_url,
products_master.pop_sku,
products_master.group_id,
products_master.lowest_price,
products_master.highest_price,
products_master.merchant,
products_master.width,
products_master.height
FROM products_master,
shoppingfeed
WHERE ( shoppingfeed.sf_product_id = products_master.pop_sku )
ORDER BY action_date DESC
LIMIT #offset#, #maxrow#
クエリ #2
SELECT DISTINCT comment,
comment_id,
comments.user_id,
comment_date_time,
comment_visibility,
comments.friend_user_id,
thread_id,
alias,
first_name,
last_name,
action_id,
group_id,
users.fb_resource_id,
gender,
acct_type,
ascore
FROM comments,
users,
products_master,
user_relationship
WHERE comments.sf_product_id = #feed_item.pop_sku#
AND comments.user_id = users.user_id
AND products_master.pop_sku = #feed_item.pop_sku#
AND ( ( comments.user_id = user_relationship.sf_id
AND user_relationship.user_id = #SESSION.user_id#
AND user_relationship.relationship_status = 3 )
OR ( comments.user_id = #session.user_id#
AND user_relationship.user_id = #SESSION.user_id#
AND user_relationship.relationship_status = 99 ) )
ORDER BY comment_date_time ASC
これが私がまとめたビューです
を選択します
products_master
。pop_sku
としてpop_sku
、products_master
。group_id
としてgroup_id
、products_master
。name
としてname
、products_master
。image_url
としてimage_url
、products_master
。last_updated
としてlast_updated
、products_master
。have_it_users
としてhave_it_users
、products_master
。want_it_users
としてwant_it_users
、products_master
。adults_only
としてadults_only
、products_master
。reviewed_by
としてreviewed_by
、products_master
。donate_needed_qty
としてdonate_needed_qty
、products_master
。inspired_users
としてinspired_users
、products_master
。deal_users_up
としてdeal_users_up
、products_master
。deal_users_down
としてdeal_users_down
、products_master
。merchant
としてmerchant
、products_master
。merchant_logo
としてmerchant_logo
、products_master
。width
としてwidth
、products_master
。height
としてheight
、products_master
。added_by
なのでadded_by
、products_master
。product_category_id
としてproduct_category_id
、comments
。comment
としてcomment
、comments
。comment_date_time
としてcomment_date_time
、comments
。comment_visibility
としてcomment_visibility
、comments
。friend_user_id
としてfriend_user_id
、comments
。user_id
としてuser_id
、comments
。action_id
としてaction_id
、comments
。comment_id
としてcomment_id
、shoppingfeed
。action_code
としてaction_code
、shoppingfeed
。action_date
としてaction_date
、shoppingfeed
。new_friend_id
としてnew_friend_id
、shoppingfeed
。question_id
としてquestion_id
、users
。first_name
としてfirst_name
、users
。last_name
としてlast_name
、users
。shopping_clout
としてshopping_clout
、users
。gender
としてgender
、users
。fb_resource_id
としてfb_resource_id
、comments
。thread_id
としてthread_id
、users
.wish_qty
としてwish_qty
、merchants
。logo
としてlogo
、merchants
。companyname
としてcompanyname
、product_relationship
。desirability
ASdesirability
from (((((products_master
joinshoppingfeed
on((products_master
.pop_sku
=shoppingfeed
.sf_product_id
))) joincomments
on((products_master
.pop_sku
=comments
.sf_product_id
))) joinusers
on(((comments
.user_id
=users
.user_id
) and (comments
.user_id
=shoppingfeed
.user_id
)))) joinproduct_relationship
on((product_relationship
.user_id
=users
.user_id
))) joinmerchants
on(((products_master
.merchant
=merchants
.merchantid
) and (product_relationship
.sf_product_id
=products_master
.pop_sku
)))) order bycomments
.comment_date_time