php - 左连接VS内连接较少行数mysql pdo php

标签 php mysql sql-server join

"SELECT *
   FROM property t1 
   LEFT 
   JOIN address t2 
     ON t1.pin = t2.pid 
    AND t1.status = t2.status 
   LEFT 
   JOIN ownerinfo t3 
     ON t1.pid = t3.pid 
    AND t1.status = t3.status 
   LEFT JOIN boundaries t4 
     ON t1.pid = t4.pid 
    AND t1.status = t4.status 
   LEFT 
   JOIN status t5 
     ON t1.pid = t5.pid 
    AND t1.status = t5.status 
   LEFT 
   JOIN references t6 
     ON t1.pid = t6.pid 
    AND t1.status = t6.status 
   LEFT 
   JOIN classification t7 
     ON t1.kind = t7.sysid 
   LEFT 
   JOIN oaddress t8 
     ON t1.basicinfo_id = t8.basicinfoid 
   LEFT 
   JOIN obasicinfo t9 
     ON t1.basicinfo_id = t9.id 
  WHERE t1.pid = :pid  
    AND t1.status = :status
 "

这是我对左连接的查询。我使用左连接主要是因为在某个时间或实例中,其中一个表中不会有与其他表相关的数据。但我还需要获取相关的数据。如果我使用 INNER JOIN 的话,我将无法得到结果。目前 LEFT JOIN 可以完成这项工作。但我得到了太多的 rowcount() 以至于我内存不足。对于 2 条目,在某些实例上我得到 6144 记录,在其他实例上我得到 12288 ,这就是我得到内存不足的地方(取决于哪个表有数据、哪个表没有数据的组合)。

  1. 我应该在插入期间填写所有表格并使用INNER JOIN吗?
  2. INNER JOIN 会减少或减少 rowcount() 的数量吗?
  3. 最适合获得更少 rowcount() 的查询是什么?

更新

  1. t1 有 2 个条目
  2. t2 有 1 个条目
  3. t3 有 2 个条目
  4. t4 有 1 个条目
  5. t5 和 t6 没有条目
  6. t7 有 15 条记录
  7. t8 有 21 个条目
  8. t9 有 12 个条目

最佳答案

它取决于您的表结构,也许左表中很少有值返回几次,并且比您收到的笛卡尔值还要少

关于php - 左连接VS内连接较少行数mysql pdo php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376137/

相关文章:

php - 数据未插入数据库

PHP 从 SFTP 下载文件

sql - 使用 select 语句获取子表中的记录数

sql - Hive 中 SQL Server UPDATE 命令的最佳等价物

c# - 从 SQL Server 中的 SELECT 获取 bool 值到 C# 中的 bool 值?

javascript - 除非刷新页面,否则AJAX不会在聊天框系统中显示最后一条消息

php - 我可以在 foreach 循环中使用多个数组吗?

php - 如何在yii2中使用查询数据进行另一个sql查询

mysql - 什么是 MySQL 集群以及在哪里可以获得初学者教程

MySQL 查询结合按时间间隔分组的唯一最大值