如何设计一个;上周Top播放了;使用SQLite数据库排名?
我有一个播放器软件。它有一个SQLite数据库支持它 我是一个SQL新手,我在猜测如何做一个“排名靠前”的排名是最好的方法。排名靠前的可能是所有时间,上周,上个月,等等 我认为在记录所有音乐播放的日期和时间,并在做了选择与日期范围内,但它看起来非常沉重如何设计一个;上周Top播放了;使用SQLite数据库排名?,sql,sqlite,database-design,Sql,Sqlite,Database Design,我有一个播放器软件。它有一个SQLite数据库支持它 我是一个SQL新手,我在猜测如何做一个“排名靠前”的排名是最好的方法。排名靠前的可能是所有时间,上周,上个月,等等 我认为在记录所有音乐播放的日期和时间,并在做了选择与日期范围内,但它看起来非常沉重 有更好的方法吗?您的方法是最简单的,所以我会尝试用一个大日志测试它,看看它的性能如何。如果它做得好,那么就没有必要把事情复杂化 如果它的性能不够好,那么这是一种更复杂的方法: 如果上个月是您将显示的最长时间范围(所有时间除外),那么您可以有一个只
有更好的方法吗?您的方法是最简单的,所以我会尝试用一个大日志测试它,看看它的性能如何。如果它做得好,那么就没有必要把事情复杂化 如果它的性能不够好,那么这是一种更复杂的方法: 如果上个月是您将显示的最长时间范围(所有时间除外),那么您可以有一个只包含上个月播放内容的日志表。每次播放歌曲时,将其添加到日志中,然后定期删除超过一个月的记录(每次插入记录时,或每天一次)。这样,您的查询将有更少的记录需要处理。上周排名仍需选择日期范围,但应该更快 如果这仍然不能很好地执行,您可以为每个时间帧(TopLastMonth、TopLastWeek、TopToday等)创建一个日志表,而不仅仅是一个延伸到最长时间帧的日志表。这样,排名查询就不必使用WHERE子句,因为它们总是汇总表中的所有记录。只有删除查询必须在日期选择,并且这些查询的运行频率可以降低
对于所有时间的排名,您需要一个表,其中包含每首歌曲的记录。每次播放歌曲时,增加播放时间。你的排名将一直看这张表而不是日志。是的,这是我想象的。非常感谢。