Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 两个请求之间保留内存的巨大差异_Sql - Fatal编程技术网

Sql 两个请求之间保留内存的巨大差异

Sql 两个请求之间保留内存的巨大差异,sql,Sql,此请求从数据库中获取大约30 MB的内存,其中有4.5k个合适的字段 string(60) "SELECT qr FROM App\Entity\User qr WHERE u.email LIKE :domain" 但是这个请求超过了8G的内存 string(78) "SELECT u FROM App\Entity\User qr, App\Entity\User u WHERE u.email LIKE :domain" 在查询数据库的过程中出现了这个问题,该数据库将使用某封电子邮件处

此请求从数据库中获取大约30 MB的内存,其中有4.5k个合适的字段

string(60) "SELECT qr FROM App\Entity\User qr WHERE u.email LIKE :domain"
但是这个请求超过了8G的内存

string(78) "SELECT u FROM App\Entity\User qr, App\Entity\User u WHERE u.email LIKE :domain"
在查询数据库的过程中出现了这个问题,该数据库将使用某封电子邮件处理所有用户,我发现问题是条令没有进行我想要的查询,问题得到了解决。然而,我想知道为什么这两个请求之间消耗的资源有如此巨大的差异

有没有合乎逻辑的答案


PS:数据库中的字段数量是4500个,每个字段都适合查询条件,因此两个查询在数据库中的少量字段上返回相同数量的用户(例如100个),但是当我实际将数量增加到4500个时,出现了这样一个问题

第二个查询对自身执行
App\Entity\User
(分别是表
User
)的
交叉连接。这将为您提供
(#行)^2行
,远远超过表中的4.5k。第二个查询还应该为第一个查询的每一行提供4.5k次(因为每个结果都与所有用户匹配)。为了进一步分析,最好了解底层数据库管理系统。在姐妹站点DBA.StackExchange.com中可以更好地询问这一问题。通过使用两个不同的别名两次添加同一个表,并且在它们之间没有连接条件,您试图实现什么目的?正如@Islingre所说的,你的方式是一种跨产品连接。Islingre给出了很好的答案,我认为这个问题可以解决,谢谢你的回答,Islingre更感谢你)