【发布时间】:2018-09-05 16:14:37
【问题描述】:
我的下面的查询有效,但返回结果需要很长时间,我不确定如何优化它以显着减少时间。如果有人有任何建议,请给我建议。
SELECT DISTINCT
u.ID,
u.user_email,
u.display_name,
m.user_id,
m1.meta_value AS first_name,
m2.meta_value AS last_name,
m3.meta_value AS descriptions,
m4.meta_value AS company_name,
m5.meta_value AS company_website,
m6.meta_value AS phone,
m7.meta_value AS company_address,
m8.meta_value AS scategory,
m9.meta_value AS facebook,
m10.meta_value AS twitter,
m11.meta_value AS linkedin,
m12.meta_value AS youtube,
m13.meta_value AS instagram,
m14.meta_value AS googleplus,
m15.meta_value AS specialties,
m16.meta_value AS company_logo
FROM $wpdb->users u
INNER JOIN $wpdb->usermeta m ON (m.user_id = u.ID)
INNER JOIN $wpdb->usermeta m1 ON (m1.user_id = u.ID AND m1.meta_key = 'first_name')
INNER JOIN $wpdb->usermeta m2 ON (m2.user_id = u.ID AND m2.meta_key = 'last_name')
INNER JOIN $wpdb->usermeta m3 ON (m3.user_id = u.ID AND m3.meta_key = 'description')
INNER JOIN $wpdb->usermeta m4 ON (m4.user_id = u.ID AND m4.meta_key = 'company_name')
INNER JOIN $wpdb->usermeta m5 ON (m5.user_id = u.ID AND m5.meta_key = 'company_website')
INNER JOIN $wpdb->usermeta m6 ON (m6.user_id = u.ID AND m6.meta_key = 'phone')
INNER JOIN $wpdb->usermeta m7 ON (m7.user_id = u.ID AND m7.meta_key = 'company_address')
INNER JOIN $wpdb->usermeta m8 ON (m8.user_id = u.ID AND m8.meta_key = 'scategory')
INNER JOIN $wpdb->usermeta m9 ON (m9.user_id = u.ID AND m9.meta_key = 'facebook')
INNER JOIN $wpdb->usermeta m10 ON (m10.user_id = u.ID AND m10.meta_key = 'twitter')
INNER JOIN $wpdb->usermeta m11 ON (m11.user_id = u.ID AND m11.meta_key = 'linkedin')
INNER JOIN $wpdb->usermeta m12 ON (m12.user_id = u.ID AND m12.meta_key = 'youtube')
INNER JOIN $wpdb->usermeta m13 ON (m13.user_id = u.ID AND m13.meta_key = 'instagram')
INNER JOIN $wpdb->usermeta m14 ON (m14.user_id = u.ID AND m14.meta_key = 'googleplus')
INNER JOIN $wpdb->usermeta m15 ON (m15.user_id = u.ID AND m15.meta_key = 'specialties')
INNER JOIN $wpdb->usermeta m16 ON (m16.user_id = u.ID AND m16.meta_key = 'company_logo')
WHERE m.meta_key = 'wp_capabilities'
AND m.meta_value LIKE '%employer%'
ORDER BY u.ID
【问题讨论】:
-
为什么不只使用 1 个连接?全部在
m -
请告诉我们
EXPLAIN输出。 -
我看到你可以只使用一个连接和一个 where 语句。
-
@LucasWieloch 你能帮我构建一个单一的连接吗?
-
感谢所有提供帮助的人,但我采用了@dingo_d 推荐的更简单的方法
标签: php sql wordpress pivot-table entity-attribute-value