如何避免每次运行WP_QUERY时都填满数组?

时间:2014-03-14 作者:Gixty

我正在制作一个跟踪用户系统,需要一些帮助来检索用户正在跟踪的用户ID。

目前,我正在使用以下SQL查询检索用户ID,用户ID如下:

$following_users_ids = $wpdb->get_results("SELECT follows_id FROM $table_name_users WHERE user_id = $current_user_id");
现在,我的主要问题来了。为了向WP\\u查询提供用户ID,我将填充如下数组:

foreach ( $following_users_ids as $following_user_id ) {
    $authors[] = $following_user_id->follows_id;
}
如果用户正在跟踪多个用户,则填充数组需要很长时间。

我的WP\\u查询参数如下:

$args = array(
  \'author__in\'     => $authors,
  \'posts_per_page\' => 12,
  \'paged\'          => $paged,
);
因此,我需要一种更快的方法来检索这些用户ID并将其提供给WP\\u查询。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

显而易见的第一步是get_col 而不是get_result. 您将立即返回一个数组,以便跳过foreach 直接前往:

$args = array(
  \'author__in\'     => $following_users_ids,
  \'posts_per_page\' => 12,
  \'paged\'          => $paged,
);
在幕后,get_col does much what you are doing 但你不能通过the more complex get_results function 在做之前。

有成千上万的用户,我不确定这个特定的操作是否会像你所想的那样受阻。也就是说,我怀疑延迟可能在其他地方,至少是延迟的重要部分。

我建议:

确保表的索引正确And you cache the results-- 可能同时缓存ID和POST结果

结束

相关推荐

自更新至3.8以来,“MySQL服务器已消失”

我在专用服务器上安装了WordPress,该服务器内存充足(超过8GB)。WordPress安装包括许多插件-50个活动插件。最需要注意的是WPML 使WordPress成为多语言的插件。主题是Weaver II Pro.堆栈是LAMP-CentOS 6.3、Apache 2.4.4、Percona MySQL、PHP-FPM。我一直很笨,没有设置测试或临时服务器。在我更新到WordPress 3.8之前,一切都很好,同时还更新了几个插件。当时我没有注意,但我所有的小部件都搞砸了,任何导航都搞砸了。我启用