(这是一个关于优化和性能的问题,我想在这里开展工作,最后是我的问题。)
我在Ruby on Rails中编写一个RESTful API,它返回一个区域中存在的视频的策略数据。示例政策可能是“视频#1 : ShowWithAds 美国”或“视频#2 : MX 中阻止。“
我需要返回两个视图的数据:
这是我的表格的样子:
视频
VideoPolicy (充当视频和政策的JOIN表)
['VideoID / Country'和'Country / PolicyID']的索引
政策
所以上面每个视图的数据库查询都是这样的:
整体上非常简单的表/查询。当这个系统开始扩展时,任意说我有500,000个视频,每个视频都有200个国家的政策,这意味着视频表变为 500,000行, VideoPolicy 表变为(500,000 * 200 =) 1亿行,策略表只是 4行。
以下是我的问题所在。
非常感谢任何建议!
答案 0 :(得分:0)
我认为(country,video_id)和(country,policy_id)上的复合索引将解决问题,这对您的集合来说是一个简单的操作。你真的需要在这里缓存 - 不确定,如果数据库性能下降,你可以按国家/地区对数据进行分片。
缓存怎么样 - 你可以缓存具体页面(比如使用视图缓存)