WP_User_Query 需要花费时间在巨大的数据库上进行分页

问题描述 投票:0回答:1

我在使用庞大的 WordPress 数据库来查找用户时遇到问题。我的数据库中有大约 147000 个用户,其中 75000 个用户具有相同的类别。当我尝试按类别(例如“医生”)搜索用户时,查询失败并且页面卡住

我需要 WP_User_Query 中的 $total_users 来进行分页,但查询似乎失败了。

我也尝试过这个WP_User_Query无法一次检索所有用户

但页面加载时间仍然太多。

$query_args = array(
                'role'  => 'professional',
                'order' => 'DESC',
                'orderby' => 'ID',
             );

有人可以帮助我解决这个问题吗?

这是链接:网站链接

谢谢

database wordpress
1个回答
0
投票

我遇到了性能问题,并深入了解了可能有哪些简单的胜利。

当您执行

WP_User_Query
并且您想要获取附加到每个用户的所有数据(默认设置)时,实际发生的情况是首先获取所有用户 ID。然后,它循环遍历每个以获取数据对象。

因此,如果您需要的只是

wp_users
表中已设置的列,那么这里有一个巨大的优势,只需在查询的
fields
属性中指定它们即可:

$query_args = [
    'role'  => 'professional',
    'order' => 'DESC',
    'orderby' => 'ID',
    'fields' => [ 'ID', 'user_login', 'user_nicename', 'user_email' ]
];

这修改了 SQL 查询来获取这些字段,并且意味着不需要服务器处理,这就是当我们谈论数千个用户时出现性能问题的地方。

© www.soinside.com 2019 - 2024. All rights reserved.