ObjectionJS疑问:query()是否会先全量查询再执行findById等条件方法?
ObjectionJS中findById的查询机制解答
不会,Person.query().findById(1)不会先全量查询所有人员数据再过滤。
ObjectionJS的query()方法只是初始化一个查询构建器实例,并不会立即执行数据库查询。后续链式调用的findById(1)是在这个构建器上添加查询条件——它会自动生成带WHERE id = 1的SQL语句,直到你用await触发执行时,数据库只会执行这条带条件的查询,返回符合ID的单条数据,不会拉取整张表的内容。
对比来看,单独执行await Person.query()时,因为没有添加任何过滤条件,才会查询全表数据。而链式调用的所有方法都是在逐步构建最终的SQL语句,确保数据库层面只返回你需要的最小数据集,完全符合你“获取最少数据”的需求。
内容的提问来源于stack exchange,提问作者Unreality
相关产品推荐
相关产品推荐

