Php 从一个小表和一个大表优化select查询
我正在使用PHP、MySQL进行以下操作Php 从一个小表和一个大表优化select查询,php,mysql,sql,Php,Mysql,Sql,我正在使用PHP、MySQL进行以下操作 我有两张桌子 使用者 用户信息 表“users”存储所有用户的记录 id name password 1 XYZ XYZ 这是可行的,但需要很长时间。。。可能它扫描整个表只是为了得到只有20个用户的消息数量 表“users”的id列不是从1开始的,它是随机的,但它会从下一条记录自动递增 表“users”的id列不是从1开始的,而是从 随机的 请尝试以下方法: SELECT u.username as username, u.id
我有两张桌子
SELECT
u.username as username,
u.id as id,
f.no_of_messages
FROM users AS u
LEFT JOIN
(
SELECT user_id, COUNT(*) no_of_messages
FROM users_messages
GROUP BY user_id
) AS f ON f.user_id = u.id
ORDER BY u.id
LIMIT 20;
查看是否在用户表上启用了索引。介意将
explain users
的输出摆成姿势吗?使用usedistinct u.username
和having count(u.id)=20
如何?他正在寻找LIMIT 20
作为分页,而不是having
子句,是的,它可能需要使用'distinct'。
SELECT u.username as username,u.id as id, COUNT( f.user_id ) AS no_of_messages
FROM users AS u
LEFT JOIN users_messages AS f ON f.user_id = u.id
GROUP BY u.id LIMIT 20
SELECT
u.username as username,
u.id as id,
f.no_of_messages
FROM users AS u
LEFT JOIN
(
SELECT user_id, COUNT(*) no_of_messages
FROM users_messages
GROUP BY user_id
) AS f ON f.user_id = u.id
ORDER BY u.id
LIMIT 20;