MySQL Workbench操作Sakila数据库时SQL语句不符预期的问题求助
修正后的SQL语句及问题说明
问题根源
你的提交未通过是因为两个明确错误:
- 重复执行了步骤3的查询语句
- 完全遗漏了课程要求的步骤4(
title > 'ALONE TRIP'的EXPLAIN查询)
正确的SQL代码
-- 步骤1:全表扫描查询,key列应为null EXPLAIN SELECT * FROM film WHERE title = 'ALONE TRIP'; -- 步骤2:创建title字段索引 CREATE INDEX idx_title ON film(title); -- 步骤3:使用索引查询,key列应为idx_title,rows列值为1 EXPLAIN SELECT * FROM film WHERE title = 'ALONE TRIP'; -- 步骤4:范围查询,key列应为null(全表扫描) EXPLAIN SELECT * FROM film WHERE title > 'ALONE TRIP'; -- 步骤5:分组查询全表扫描,key列应为null EXPLAIN SELECT rating, count(*) FROM film GROUP BY rating; -- 步骤6:创建rating字段索引 CREATE INDEX idx_rating ON film(rating); -- 步骤7:使用索引分组查询,key列应为idx_rating EXPLAIN SELECT rating, count(*) FROM film GROUP BY rating;
各步骤预期结果核对
- 步骤1:
key列值为null,执行全表扫描 - 步骤3:
key列值为idx_title,rows列值为1,使用索引精准匹配 - 步骤4:
key列值为null,MySQL对该范围查询选择全表扫描(符合课程预期) - 步骤5:
key列值为null,分组查询未使用索引 - 步骤7:
key列值为idx_rating,利用索引完成分组统计,提升查询效率
内容的提问来源于stack exchange,提问作者Gregory McNeal
相关产品推荐
相关产品推荐

