【发布时间】:2017-11-08 07:24:16
【问题描述】:
我有sql查询
SELECT
bd2.*,
bdmax.last_video,
bdmax.number_videos
FROM
video bd2
JOIN
( SELECT
bd.video_cat_id,
MAX(bd.last_poster_time) AS last_video,
COUNT(bd.video_id) as number_videos
FROM
video bd
GROUP BY
bd.video_cat_id
) AS bdmax
ON bd2.video_cat_id = bdmax.video_cat_id
AND bd2.last_poster_time = bdmax.last_video;
表格键是
PRIMARY KEY (`video_id`),
KEY `video_cat_id` (`video_cat_id`),
KEY `video_user_id` (`video_user_id`),
KEY `video_time` (`video_time`),
KEY `video_urn` (`video_urn`),
KEY `last_poster_time` (`last_poster_time`),
KEY `video_username` (`video_username`),
KEY `video_approval` (`video_approval`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=45619 ;
如何优化此查询以使用索引?
【问题讨论】:
-
它已经在使用你的索引了?您查询整个表,因此扫描不会出现问题。
-
感谢您的回复!你能重写这个sql查询吗?
-
这样就好了。因为您要查询整个表,所以必须读取整个表。查询规划器给你一个很好的计划
-
可能需要创建新索引?
-
为什么您认为您的查询需要更改?我看不出有什么问题
标签: mysql sql optimization innodb