Complicated MySQL Query

时间:2014-07-30 作者:Philip Light

我正在尝试建立一个成员目录,在顶部有一些搜索选项。每个成员也有几个自定义字段(使用高级自定义字段)。希望有一个一次收集所有数据的单一查询,包括每个成员的所有自定义字段,而不仅仅是查询帖子和循环,并且必须查询自定义字段(一次显示100个,每个都有10个自定义字段)。

我们已经非常接近了,下面的查询可以正常工作,并以干净的行返回所有必要的数据。然而,它的速度非常慢,大约10秒,我们知道这是来自ORDERBY子句。这个查询让我有点不知所措,我不知道如何优化它,让它运行得更快。请注意,orderby字段来自wp\\u Posteta,因此无法仅向“member\\u last\\u name”字段添加索引。

有什么想法吗???

谢谢

菲利普

SELECT * FROM ( 
  SELECT 
    MAX(CASE WHEN wp_postmeta.meta_key = \'member_first_name\' THEN wp_postmeta.meta_value END ) AS \'member_first_name\', 
    MAX( CASE WHEN wp_postmeta.meta_key = \'member_last_name\' THEN wp_postmeta.meta_value END ) AS \'member_last_name\',
    wp_posts.ID FROM wp_posts 
  LEFT JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) 
  WHERE wp_posts.post_status = \'publish\' 
  AND wp_posts.post_type = \'member\' 
  GROUP BY wp_posts.ID 
  ORDER BY member_last_name desc 
  LIMIT 5 
) AS t;

1 个回复
SO网友:tormorten

为什么不直接使用WP\\u查询,而不是重新发明轮子呢?我非常确信,您可以通过WP\\u查询中的元查询来解决这个问题。See the codex.

结束

相关推荐

插件生成意外输出-关于WP MySQL转储导入

我正在开发插件,出现以下错误:该插件在激活期间生成了357954个字符的意外输出。如果您注意到“headers ready sent”消息、联合提要问题或其他问题,请尝试停用或删除此插件。现在,我的激活挂钩如下所示: function _activate() { global $wpdb; require_once(ABSPATH . \'wp-content/plugins/my-plugin/sql.php\'); require_once(AB