1
我有以下查詢,花了我2秒鐘執行,現在需要大約10分鐘,因爲我在表custom_redemptions中添加了100個以上的條目,而在另一個表中又增加了10個左右。SQL查詢優化 - 執行時間
隨着DISTINCT
它返回我
Showing rows 0 - 29 (96 total, Query took 0.00156 sec)
我拿出DISTINCT
來跟蹤bug,它返回我
Showing rows 0 - 29 (94174080 total, Query took 0.1510 sec)
有什麼辦法來優化呢?
SELECT DISTINCT c.id, c.couponid, c.branchid, c.chainid
FROM `users_roles` a,
`field_data_field_ypefthinos` b,
`custom_redemptions` c,
`field_data_field_chain_manager` e,
`field_data_field_node_tax_inception` f,
`field_data_field_brand_manager` j,
`field_data_field_brand_node_ref` k,
`field_data_field_product_ref` i,
`field_data_field_company_manager` z,
`field_data_field_brand_company` t
WHERE (a.rid = 4
AND a.uid = 351
AND b.field_ypefthinos_uid = a.uid
AND b.entity_id = c.branchid)
OR
(a.rid = 5
AND a.uid = 351
AND e.field_chain_manager_uid = a.uid
AND e.entity_id = f.entity_id
AND f.field_node_tax_inception_tid = c.chainid)
OR
(a.rid = 9
AND a.uid = 351
AND j.field_brand_manager_uid = a.uid
AND j.entity_id = k.field_brand_node_ref_nid
AND k.entity_id = i.field_product_ref_nid
AND i.entity_id = c.couponid)
OR
(a.rid = 6
AND a.uid = 351
AND z.field_company_manager_uid = a.uid
AND z.entity_id = t.field_brand_company_nid
AND t.entity_id = k.field_brand_node_ref_nid
AND k.entity_id = i.field_product_ref_nid
AND i.entity_id = c.couponid)
你知道你做** CARTESIAN產品**與大規模'WHERE'?它基本上意味着您的中間結果將具有尺寸SIZE(users_roles)x SIZE(field_data_field_ypefthinos)x ... x SIZE(field_data_field_brand_company)。 – lad2025
嘗試使用JOIN來結合例如''a.uid''和''z.field_company_manager_uid'' –
你應該打破你的請求,而不是做一個巨大的 – Zl3n