Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更好的实践:是否将计数结果保存到字段中?_Mysql_Count - Fatal编程技术网

Mysql 更好的实践:是否将计数结果保存到字段中?

Mysql 更好的实践:是否将计数结果保存到字段中?,mysql,count,Mysql,Count,我正在开发一个音乐流媒体网站,我有两个主要的表格:“活动”和“音乐”。除其他外,活动将每首歌曲的复制保存到一张新唱片中 每次我从音乐中选择时,我都需要获取每首歌曲的复制数量。那么,更好的做法是什么呢 SELECT music.song, music.artist, COUNT (activity.id) AS reproductions FROM music LEFT JOIN activity USING (song_id) WHERE music.song_id = XX GRO

我正在开发一个音乐流媒体网站,我有两个主要的表格:“活动”和“音乐”。除其他外,活动将每首歌曲的复制保存到一张新唱片中

每次我从音乐中选择时,我都需要获取每首歌曲的复制数量。那么,更好的做法是什么呢

    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
当然,最后一个查询要简单得多。但要使用它,每次播放声音文件时,我都要进行两次查询:一次是在活动表中插入,另一次是在音乐表的复制字段中更新


在这种情况下,最好的做法是什么?

这取决于这两个查询的响应时间

在表变得巨大(假设)之后,SQLNR2会更好


您必须考虑到,即使是insert也可能会很昂贵……您可能会考虑一些数据仓库,如果您有..数百万行的数据库。

创建一个触发器,它会自动递增计数器。哦,我以前从未使用过触发器。我会读到的。谢谢