我有这个 users
表:
id : int (255)
name: char (100)
last_comment_target: int(100)
last_comment_date: datetime
这个表有大约 130 万行。
PKEY
和 BTREE
在 id
、last_comment_target
和 last_comment_date
上。
而且,我正在尝试执行范围查询:
SELECT * FROM users
WHERE id IN (1,2,3,5,...[around 5000 ids])
AND last_comment_target > 0
ORDER BY last_comment_dt DESC LIMIT 0,20;
有时查询可能需要长达 3 秒的时间。我想知道是否有更好的方法来优化这个查询。或者,如果可以重写此查询。
非常感谢您的帮助。
最佳答案
SELECT u.*
FROM
users u
JOIN (
SELECT 1 id
UNION ALL
SELECT 2 id
UNION ALL
:
:
SELECT 5000 id
) ids ON ids.id = u.id
WHERE
last_comment_target > 0
ORDER BY
last_comment_dt DESC
LIMIT 0, 20;
关于MySQL 查询需要优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126482/