【发布时间】:2021-11-14 23:28:23
【问题描述】:
我试图在 Stackoverflow 上找到解决方案,可能我的措辞有误。
我有一个查询需要很长时间才能执行。我相信有一些简单的方法可以改进它。例如,我两次使用相同的子查询来显示两个不同的列(sum 和 count),但在尝试自己解决时遇到了几个错误。
SELECT u.ID,
u.user_email AS mail,
u.user_login AS userName,
u.user_registered AS signUpDate,
(select meta_value from wp_usermeta where user_id = u.ID and meta_key = 'first_name' limit 1) as firstName,
(select meta_value from wp_usermeta where user_id = u.ID and meta_key = 'last_name' limit 1) as lastName,
(select meta_value from wp_usermeta where user_id = u.ID and meta_key = 'billing_phone' limit 1) as billingPhone,
(select meta_value from wp_usermeta where user_id = u.ID and meta_key = 'shipping_phone' limit 1) as shippingPhone,
(SELECT COUNT(meta_value) from wp_postmeta WHERE meta_key = '_order_total' and post_id IN (select post_id from wp_postmeta where meta_value = u.ID and meta_key = '_customer_user')) as orderCount,
(SELECT SUM(meta_value) from wp_postmeta WHERE meta_key = '_order_total' and post_id IN (select post_id from wp_postmeta where meta_value = u.ID and meta_key = '_customer_user')) as moneySpent
FROM wp_users u;
【问题讨论】:
-
我建议您简化查询以确定性能问题所在。也就是说,删除子查询,看看有什么影响。我会猜这是最后两个子查询,但我不知道您的数据或数据模型。
-
你是对的,是两个子查询。由于 COUNT 和 SUM 使用完全相同的子查询,是否有办法一次性获取两列?
-
。 .您应该编辑问题。如此重要的信息不应该只存在于 cmets 中。
-
WP 的元表索引效率低下。使用这个插件来获得更快的速度:wordpress.org/plugins/index-wp-mysql-for-speed
标签: mysql sql wordpress subquery query-optimization