laravel - Eloquent ORM 在急切加载时是否存在实际限制?
问题描述
在 Eager Loading 部分,https ://laravel.com/docs/5.6/eloquent-relationships#eager-loading,Laravel 指南解释说它正在执行一个WHERE... IN...
查询。
IN
该子句的参数数量是否有实际限制?例如,如果我在子句中有 100 个值,我应该开始查看不同的选项,例如表连接吗?
大概在大多数情况下,在我达到我的 RDBMS 的硬限制之前,性能将成为限制因素。
解决方案
除非您有 10K+ 行,否则我认为性能不会成为问题。您几乎总是查询表的主键 ( id
),它应该有一个索引,从而提供快速访问。
然而,对参数数量的硬限制可能是一个问题。SQL Server 只允许 2100 个参数,SQLite 只允许 999 个。这个包可以绕过这些限制(自我推广)。
在WHERE IN
查询变得太慢的情况下,JOIN 也不会更快。
如果您尝试获取 10K+ 行,创建模型对象也将花费大量时间。
推荐阅读
- apache-spark - 通过 Simba JDBC 的 Databricks Spark 连接问题
- mysql - Laravel 与 POSTGRESS 。您可能需要添加显式类型转换错误,运算符不存在:
- wordpress - WooCommerce:有什么方法可以拆分或克隆每个产品内的标签机制?
- javascript - 无法使用从安全嵌入式芯片生成的 WebCrypto API (subtlecrypto) 验证原始 UInt8Array ECDSA (secp256r1) 消息/签名/pubkey
- python - 当我通过调用函数打印火车标签时,我得到空列表
- ruby-on-rails - 如何正确地将参数传递给rails表单
- python - 使用 selenium Web 驱动程序提取跨度值
- javascript - 用的地方多的接口存放在哪里
- ruby-on-rails - Ruby on rails,如何在没有关联的情况下查询数据库中的对象?
- node.js - 使用nodejs在lambda函数中发送邮件