我有一个 Rails ActiveRecord 查询,可以找到名称为某个标记的所有记录。
records = Market.where("lower(name) = ?", name.downcase );
rec = records.first;
count = records.count;
服务器显示调用.first
和.count
都在访问数据库。
←[1m←[35mCACHE (0.0ms)←[0m SELECT "markets".* FROM "markets" WHERE (lower(nam
e) = 'my market') LIMIT 1
←[1m←[36mCACHE (0.0ms)←[0m ←[1mSELECT COUNT(*) FROM "markets" WHERE (lower(na
me) = 'my market')←[0m
为什么它可以使用已经查询的结果时去数据库获取计数?
我担心未来的表现。今天有1000条记录。当该表包含 800 万行时,执行两次查询,一次查询数据,一次查询计数,这将是昂贵的。
如何从集合而不是数据库中获取计数?