我在下面有一个查询。在执行它时,它会返回所有结果,我可以看到每个成员 ID 的多条记录。
我想选择随机选择的两个成员的个人资料,而不会出现任何性能问题。
SELECT
a.memberid,
a.category_id,
a.content,
a.count_cid,
a.importance
FROM tb_profilingdata a,
tb_member b
WHERE a.memberid = b.memberid
AND a.category_id IN($catstr)
AND a.memberid NOT IN('$mid',$seen)
AND b.gender = 'male'
ORDER BY a.memberid, a.category_id
我尝试了一些查询来选择一条随机记录
SELECT
r1.memberid
FROM tb_profilingdata AS r1
JOIN (SELECT
(RAND() * (SELECT MAX(DISTINCT(memberid)) FROM tb_profilingdata)) AS memberid) AS r2
WHERE r1.memberid >= r2.memberid
ORDER BY r1.memberid ASC
LIMIT 1
但它总共从tb_profilingdata中选择了 1 条记录,而我想要一个随机选择的成员的记录。
我用tb_member尝试了相同的查询,但是 tb_member 中存在的成员可能在 tb_profilingdata 中没有它的条目。
请建议我一个性能问题最少的好方法。