我被困在元过滤器中,它花费太多时间在结束查询执行超时时检索结果.....
我不是在寻找增加时间或我需要为该查询组合多个联接或任何其他解决方案的东西
SELECT sql_calc_found_rows wp_posts.id
FROM wp_posts
INNER JOIN wp_postmeta ON ( wp_posts.id = wp_postmeta.post_id )
INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.id = mt1.post_id )
INNER JOIN wp_postmeta AS mt2 ON ( wp_posts.id = mt2.post_id )
INNER JOIN wp_postmeta AS mt3 ON ( wp_posts.id = mt3.post_id )
INNER JOIN wp_postmeta AS mt4 ON ( wp_posts.id = mt4.post_id )
INNER JOIN wp_postmeta AS mt5 ON ( wp_posts.id = mt5.post_id )
INNER JOIN wp_postmeta AS mt6 ON ( wp_posts.id = mt6.post_id )
INNER JOIN wp_postmeta AS mt7 ON ( wp_posts.id = mt7.post_id )
INNER JOIN wp_postmeta AS mt8 ON ( wp_posts.id = mt8.post_id )
WHERE 1=1
AND (
wp_postmeta.meta_key = 'wa_prod_Company'
AND (
( mt1.meta_key = 'wa_prod_Duration' AND mt1.meta_value LIKE '%%' )
AND ( mt2.meta_key = 'wa_prod_Connection' AND mt2.meta_value > '0' )
AND ( mt3.meta_key = 'wa_prod_BW' AND mt3.meta_value >= '0' )
AND ( mt4.meta_key = 'wa_prod_HDD' AND Cast(mt4.meta_value AS SIGNED) >= '0' )
AND ( mt5.meta_key = 'wa_prod_Price' AND Cast(mt5.meta_value AS SIGNED) BETWEEN '0' AND '2000' )
AND ( mt6.meta_key = 'wa_prod_Availability' AND mt6.meta_value LIKE '%on%' )
AND (
( mt7.meta_key = 'wa_prod_Type' AND mt7.meta_value LIKE '%Shared%' )
OR ( mt7.meta_key = 'wa_prod_Type' AND mt7.meta_value LIKE '%Semi Dedicated%' )
OR ( mt7.meta_key = 'wa_prod_Type' AND mt7.meta_value LIKE '%Dedicated%' )
)
AND (
( mt8.meta_key = 'wa_prod_Premium_Featurs' AND mt8.meta_value LIKE '%SSD%' )
)
)
)
AND wp_posts.post_type = 'product'
AND (( wp_posts.post_status = 'publish' ))
GROUP BY wp_posts.id
ORDER BY wp_postmeta.meta_value ASC limit 0, 10
我尝试仅使用一个连接
INNER JOIN wp_postmeta ON ( wp_posts.id = wp_postmeta.post_id )
并删除其他连接,然后将mt1,mt2替换为wp_postmeta,但未检索到结果。我还有其他几个过滤器,但仅在应用8个过滤器查询后,由于SQL Server超时而未检索到任何内容...
我也尝试过meta-query-terribly-slow,但由于不支持WP V 4.6而无法正常工作
最佳答案
1)此查询的临时解决方案会增加服务器执行时间
为了获得最大执行时间,请尝试:
set_time_limit(0);
同时尝试优化您的查询。并在50或100个插槽的每个间隔之间使用睡眠。
2)最少使用like,请尽可能使用mt7.meta_key ='wa_prod_Type'和mt7.meta_value ='Shared'。
关于php - 有什么办法可以为同一个表合并多个联接? V 4.6的WP Meta查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39929086/