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

How is query performance affected by the number of records in rails?

查询速度受行数影响吗?

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

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

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

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

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