【发布时间】:2025-12-28 13:05:17
【问题描述】:
我有 posts 表,包含 100K 行,具有以下架构:
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT,
`subject` VARCHAR(50) NULL,
`message` VARCHAR(200) NULL,
`user_id` INT NOT NULL,
`status` TINYINT NULL,
`created_at` DATETIME NULL,
INDEX `user_id` (`user_id),
INDEX `created_at` (`created_at`),
PRIMARY KEY (`id`)
);
我正在尝试执行以下查询以获取按用户和发布状态分组的最后创建日期的 user_id:
SELECT `user_id`, `status`, max(`created_at`)
FROM `posts`
GROUP BY `user_id`, `status`;
这个选择查询花费了很多时间,当我对选择查询进行解释时,它根本没有使用任何索引。如何重写查询以使用索引并使其更快。
【问题讨论】:
-
欢迎来到 SO。感谢您认真地写好您的问题。
标签: mysql database indexing group-by query-optimization