如果存在的话,以下两个选项(在此答案中提到)之间是否存在性能差异?
由于SQL语句不同,理论上性能差异是可能存在的。但是如果假设数据库中已经为“name”创建了索引,是否存在实际差异我就不清楚了。同时,Ruby代码中执行的工作量(如初始化和GC)是否有所不同也不确定。
如果有影响的话,我使用的是Rails 3.2.20版本。
Thing.where(name: "Bob").present?
生成SQL的代码
SELECT COUNT(*) FROM things WHERE things.name = "Bob";
并且
Thing.exists?(name: "Bob")
这会生成SQL语句。
SELECT 1 AS one from things WHERE name ="Bob" limit 1;
由于SQL语句不同,理论上性能差异是可能存在的。但是如果假设数据库中已经为“name”创建了索引,是否存在实际差异我就不清楚了。同时,Ruby代码中执行的工作量(如初始化和GC)是否有所不同也不确定。
如果有影响的话,我使用的是Rails 3.2.20版本。