Rails 中的记录数如何影响查询性能?



查询速度是否受行数影响?

假设我们有一个活动记录模型"Post",其中许多模型的status=false,如果所有status=false的记录都不会被使用,但是有必要创建一个不同的模型,比如"OffPost"来存储所有那些状态为false的帖子,所以当我查询"Post"中的任何对象时,查询速度更快吗? 或者只是一个范围得到所有状态等于 true 的帖子是否代表相同的效率?

如果您经常按状态查询,最重要的是先向状态列添加索引。

https://en.wikipedia.org/wiki/Database_index

速度确实受到行数和拆分表或整个数据库(例如按国家、城市、用户 ID(的影响,是保持低记录数的一种策略。这称为分片 (https://en.wikipedia.org/wiki/Shard_(database_architecture((。然而,引入这种逻辑会带来一个更复杂的系统的大代价,这个系统更难维护和理解(例如,查询会变得更加困难(。只有当你有数十亿条记录时,它才值得。如果只有几(一(亿条记录,则在表上选择良好的索引是最佳方法。

如果带有status=false的记录未在您的应用程序中使用,而是必要的,例如用于数据分析,另一种方法可能是不时将它们移动到数据仓库并从数据库中删除以保持行数较小。但同样,数据仓库带来了更多的复杂性。

最新更新