gpt4 book ai didi

mysql - 使用联接对大型用户数据库进行分页

转载 作者:行者123 更新时间:2023-11-29 07:56:22 25 4
gpt4 key购买 nike

我有一个包含 100,000+ 用户的 WordPress 用户数据库表。作为插件的一部分,我需要列出订阅者。显然获得 100,000 个用户需要进行分页。为了获得计算分页的用户总数,我无限制地运行主查询并对结果执行 PHP count():

SELECT role.umeta_id, role.user_id, role.meta_key, role.meta_value role,       u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users AS u
LEFT JOIN wp_usermeta role ON role.user_id = u.ID
AND role.meta_key = 'wp_capabilities'
WHERE role.meta_value LIKE '%subscriber%'
GROUP BY u.ID
ORDER BY u.ID ASC

我(毫不奇怪)执行此操作时内存不足。我尝试过进行类似的计数

SELECT COUNT( u.ID ) 
FROM wp_users AS u
LEFT JOIN wp_usermeta role ON role.user_id = u.ID
AND role.meta_key = 'wp_capabilities'
WHERE role.meta_value LIKE '%subscriber%'
GROUP BY u.ID
ORDER BY u.ID ASC

但不是返回单个值,而是返回行数和 count = 1 的行数。

我知道Wordpress中有get_user函数可以做到这一点 - 我只是用它作为一个简化的例子(查询实际上更复杂)

所以问题是“在这种情况下如何有效地获取行总数?”

最佳答案

您的查询的问题是您按 u.ID 进行分组,而 count 是一个聚合函数

编辑:我建议按照您留下的位置删除该组和顺序

SELECT COUNT( u.ID ) 
FROM wp_users AS u
LEFT JOIN wp_usermeta role ON role.user_id = u.ID
AND role.meta_key = 'wp_capabilities'
WHERE role.meta_value LIKE '%subscriber%'

关于mysql - 使用联接对大型用户数据库进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com