我想用一些settings_id获取表的最新记录。
| 身份证|设置_id|添加日期|
| - ------| - ------| - ------|
| 1个|七|2022年8月23日01时44分24秒|
| 第二章|九|2022年8月23日01时44分24秒|
| 三个|十一|2022年8月23日01时44分24秒|
| 四个|七|2022年8月25日01时44分24秒|
| 五个|九|2022年8月25日01时44分24秒|
| 六个|十一|2022年8月25日01时44分24秒|
| 七|七|2022年8月26日01时44分24秒|
| 八个|九|2022年8月26日01时44分24秒|
| 九|十一|2022年8月26日01时44分24秒|
SELECT id, settings_id, MAX(added_date)
FROM data_rows
WHERE settings_id IN (7,9,11)
GROUP BY settings_id;
预期结果
| 身份证|设置_id|添加日期|
| - ------| - ------| - ------|
| 七|七|2022年8月26日01时44分24秒|
| 八个|九|2022年8月26日01时44分24秒|
| 九|十一|2022年8月26日01时44分24秒|
- 我得到了想要的结果,但问题是获取数据需要一分钟以上的时间。**
是否有办法减少此查询所花费的时间?
谢啦,谢啦
1条答案
按热度按时间x8diyxa71#
在MySQL 8+上,使用
ROW_NUMBER
可以轻松满足您的要求:对于优化上述查询,
(settings_id, dateAdded DESC)
上的索引应该有所帮助:如果使用这个索引,MySQL应该能够快速计算出所需的行数。
在MySQL 5.7上,使用以下查询:
使用与上述建议相同的索引。