微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 需要帮助优化wordpress meta_query

我会帮助优化这个wordpress查询,它目前需要100%的cpu使用率,并且从未有机会完成它:

SELECT wp_posts.* 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)
INNER JOIN wp_postMeta AS mt9 ON (wp_posts.ID = mt9.post_id)
INNER JOIN wp_postMeta AS mt10 ON (wp_posts.ID = mt10.post_id) WHERE 1=1 AND wp_posts.post_type = 'produkter' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND (wp_postMeta.Meta_key = 'csv_product_month_sub'
OR (mt1.Meta_key = 'csv_product_type' AND CAST(mt1.Meta_value AS CHAR) = 'Mobilt Bredbaand')
OR (mt2.Meta_key = 'csv_product_consumption' AND CAST(mt2.Meta_value AS SIGNED) BETWEEN '0' AND '2')
OR (mt3.Meta_key = 'csv_product_consumption' AND CAST(mt3.Meta_value AS SIGNED) BETWEEN '3' AND '9')
OR (mt4.Meta_key = 'csv_product_consumption' AND CAST(mt4.Meta_value AS SIGNED) BETWEEN '10' AND '19')
OR (mt5.Meta_key = 'csv_product_download' AND CAST(mt5.Meta_value AS SIGNED) BETWEEN '2' AND '9')
OR (mt6.Meta_key = 'csv_product_download' AND CAST(mt6.Meta_value AS SIGNED) BETWEEN '10' AND '19')
OR (mt7.Meta_key = 'csv_product_download' AND CAST(mt7.Meta_value AS SIGNED) BETWEEN '20' AND '29')
OR (mt8.Meta_key = 'csv_product_month_sub' AND CAST(mt8.Meta_value AS SIGNED) BETWEEN '0' AND '49')
OR (mt9.Meta_key = 'csv_product_month_sub' AND CAST(mt9.Meta_value AS SIGNED) BETWEEN '50' AND '99')
OR (mt10.Meta_key = 'csv_product_month_sub' AND CAST(mt10.Meta_value AS SIGNED) BETWEEN '100' AND '149') ) GROUP BY wp_posts.ID ORDER BY wp_postMeta.Meta_value+0 ASC 

解决方法:

到目前为止,我有

SELECT wp_posts.* FROM wp_posts INNER JOIN wp_postMeta ON (wp_posts.ID = wp_postMeta.post_id)
WHERE ID IN (
            SELECT post_id from wp_postMeta 
            WHERE 
            (
                (Meta_key = 'csv_product_consumption' AND CAST(Meta_value AS SIGNED) BETWEEN 0 AND 2) 
                OR (Meta_key = 'csv_product_consumption' AND CAST(Meta_value AS SIGNED) BETWEEN 3 AND 9) 
                OR (Meta_key = 'csv_product_consumption' AND CAST(Meta_value AS SIGNED) BETWEEN 10 AND 19) 
                OR (Meta_key = 'csv_product_download' AND CAST(Meta_value AS SIGNED) BETWEEN 2 AND 9) 
                OR (Meta_key = 'csv_product_download' AND CAST(Meta_value AS SIGNED) BETWEEN 10 AND 19) 
                OR (Meta_key = 'csv_product_download' AND CAST(Meta_value AS SIGNED) BETWEEN 20 AND 29) 
                OR (Meta_key = 'csv_product_month_sub' AND CAST(Meta_value AS SIGNED) BETWEEN 0 AND 49) 
                OR (Meta_key = 'csv_product_month_sub' AND CAST(Meta_value AS SIGNED) BETWEEN 50 AND 99) 
                OR (Meta_key = 'csv_product_month_sub' AND CAST(Meta_value AS SIGNED) BETWEEN 100 AND 149) 
            )
            GROUP BY post_id
        )
AND wp_posts.post_type = 'produkter' 
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') 
AND ( (wp_postMeta.Meta_key = 'csv_product_type') AND (wp_postMeta.Meta_value = 'Mobilt Bredbaand'))
ORDER BY wp_postMeta.Meta_value+0 ASC

它不再使用太多的cpu,查询需要0.0331秒.

任何其他想法将不胜感激.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐