我有一个包含大约100,000条记录的MySQL表。当我尝试使用主键(unsigned int)从该表中选择大约20行时,执行大约需要一秒钟。有没有办法优化这个?
表:电影
Column Type Null Default
film_id int(11) No
film_name varchar(45) No
film_overview text No
film_tagline varchar(150)Yes NULL
release_date date Yes NULL
api_id int(11) No
category_id int(11) No 0
影片索引
Keyname Type Unique Packed Column Cardinality Collation Null Comment
PRIMARY BTREE Yes No film_id 110236 A No
api_id BTREE No No api_id 110236 A No
film_id BTREE No No film_id 110236 A No
category_id BTREE No No category_id 4 A No
EXPLAIN
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY films ALL NULL NULL NULL NULL 115029 Using where
2 DEPENDENT SUBQUERY popular_films ALL NULL NULL NULL NULL 18 Using where
QUERY
SELECT film_name FROM `films`
WHERE film_id in (SELECT film_id FROM popular_films);
答案 0 :(得分:2)
现在您已经添加了查询,答案很简单:只需使用连接:
SELECT films.film_name
FROM `films`
JOIN popular_films
ON popular_films.film_id = films.film_id;
看起来你的popular_films表与电影的结构相同,所以可能不应该是一个单独的表。