我正在学习使用mysql,所以遇到了一些问题。
我有三个表:users movie and movie watching history(moviewh)
movie
表的结构为:
movie_id[key] movie_title
users
是:user_id[key] user_name
moviewh是:
user_id[key] movie_id[key] watching_date[key]
和我的SQL查询是:
EXPLAIN
SELECT m.movie_id,m.movie_name_cn FROM movie AS m
LEFT JOIN moviewh AS mwh
ON m.movie_id = mwh.movie_id
WHERE date_format(mwh.watching_date,'%Y-%m-%d') = '2010-11-01' AND mwh.user_id = 1
这样。我如何优化表和查询?
最佳答案
如果您只想查看用户在特定日期观看了哪些电影,为什么要进行左联接?
SELECT m.movie_id,m.movie_name_cn
FROM movie AS m, moviewh AS mwh
WHERE m.movie_id = mwh.movie_id
AND date_format(mwh.watching_date,'%Y-%m-%d') = '2010-11-01'
AND mwh.user_id = 1
当然,假设用户不能观看您的数据库中不存在的电影...