我正在学习使用mysql.So,我遇到了一些问题。
我有三张桌子: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
所以。我该如何优化表和查询?
答案 0 :(得分: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
当然假设用户无法观看数据库中不存在的电影...