Fre*_*xuz 3 ruby mysql database-design ruby-on-rails
我有一个网站,人们可以添加自己喜欢的电视剧.有一个功能可以检查您看过的剧集.
每个被检查的剧集在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
Run Code Online (Sandbox Code Playgroud)
我能做到这一点:
user_id | show_id | episode_ids
1 ....... 123 ......7675,7676,7677
1 ....... 456 ......5678,5679,5680
Run Code Online (Sandbox Code Playgroud)
然后我必须将字符串拆分成一个数组,并使用array.include?(some-id).
这应该可以减轻数据库的负担,但Ruby会有更多更重的数组代码来处理.
我是在正确的轨道上吗?或者任何人都可以想到更好的解决方案?
Mar*_*rkR 13
否否,这绝对不是构建这样一个数据库的方法.varchar字段中以逗号分隔的列表是您应该考虑的最不理想的反模式.
这听起来像我的性能问题是基于猜测.所以与其:
600k行没有(在一个有三个整数的表中).真.即使是最小的服务器,这也可以适用于ram.从ram中查询表应该是如此之快,你不必担心它.
如果您已经过了第1步(确实存在问题),请询问包含整个相关模式,确切查询,解释计划和时间数据的其他问题.
归档时间: |
|
查看次数: |
496 次 |
最近记录: |