我有一个网站,人们可以添加自己喜欢的电视剧.有一个功能可以检查您看过的剧集.
每个被检查的剧集在DB表中创建一个记录(使用user_id,show_id和episode_id).
这个表现在超过600.000行并且增长非常快!
我已设置索引,但我觉得查询此表时的性能越来越差.
我对新解决方案的想法:
所以代替:
user_id | show_id | episode_id
1 ....... 123 ......7675
1 ....... 123 ......7676
1 ....... 123 ......7677
1 ....... 456 ......5678
1 ....... 456 ......5679
1 ....... 456 ......5680
我能做到这一点:
user_id | show_id | episode_ids
1 ....... 123 ......7675,7676,7677
1 ....... 456 ......5678,5679,5680
然后我必须将字符串拆分成一个数组,并使用array.include?(some-id).
这应该可以减轻数据库的负担,但Ruby会有更多更重的数组代码来处理.
我是在正确的轨道上吗?或者任何人都可以想到更好的解决方案?
解决方法:
否否,这绝对不是构建这样一个数据库的方法. varchar字段中以逗号分隔的列表是您应该考虑的最不理想的反模式.
这听起来像我的性能问题是基于猜测.所以与其:
>确定是否确实存在问题
>使用适当的仪器查找原因
>在非生产环境中测试可能的解决方案.
600k行没有(在一个有三个整数的表中).真.即使是最小的服务器,这也可以适用于ram.从ram中查询表应该是如此之快,你不必担心它.
如果您已经过了第1步(确实存在问题),请进一步询问包含整个相关模式,确切查询,解释计划和时间数据的问题.
原文地址:https://codeday.me/bug/20190713/1448064.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。