我正在开发一个音乐流媒体网站,我有两个主要的表:'活动'和'音乐'。除其他外,活动将每首歌曲复制保存到新记录中。
每次我从音乐中选择时,我都需要获取每首歌曲的复制数量。那么,什么是更好的做法
SELECT music.song, music.artist, COUNT (activity.id) AS reproductions
FROM music LEFT JOIN activity USING (song_id) WHERE music.song_id = XX
GROUP BY music.song_id
或者最好将复制数量保存到音乐表的新字段中并查询:
SELECT song, artist, reproductions FROM music WHERE music.song_id = XX
这最后一个查询当然要容易得多。但要使用它,每次播放声音文件时,我都应该制作两个查询:活动表中的一个INSERT
和音乐表上复制字段上的一个UPDATE
。
在这种情况下,更好的做法是什么?
答案 0 :(得分:1)
这取决于这两个查询及时响应的响应时间。
表格会变得很大(假设)sql nr 2会更好。
你必须认为,即使插入也可能是昂贵的......你可能会考虑一些数据仓库,如果你在DB中有数百万行。