php - Mysql:提取多表中未链接数据的最佳实践

标签 php mysql mysqli

我在一个多表中使用一个大的选择,其中有很多行,我需要告诉您没有链接的表。我需要提取每一个并添加到一个数组中。

我的问题是:

当我使用这个时:

mysql> select w.*,s.*,p.*,h.*,c.*,b.*,o.* from
       `base` b,`chain` c,`house` h,
       `option` o,`piece` p,systems s,
       `wall` w;

有时,我在执行查询后得到这个:

错误 2008 (HY000):MySQL 客户端内存不足

执行此函数大约需要 1 分钟,获取数组结果大约需要 1 分钟 40。

之后,我需要使用类似的东西:

$base = $chain =
$house = $option=
$piece= $systems =
$wall = array();
while($row = $data->fetch_array(MYSQLI_ASSOC)) {
    //build all array properly
}

是否可以减少执行时间?最好对我需要提取行并将行插入“好”数组的每个表使用 1 个查询?

谢谢

** 编辑 **

我也尝试过这个但同样的事情:

mysql> select w.*,s.*,p.*,h.*,c.*,b.*,o.* from
       `base` b INNER JOIN `chain` c INNER JOIN `house` h INNER JOIN 
       `option` o INNER JOIN `piece` p INNER JOIN systems s INNER JOIN 
       `wall` w;

最佳答案

您应该对每个表进行查询。

您提到的查询执行笛卡尔连接,这几乎肯定不是您想要的。在笛卡尔连接中,每行都包含来自每个表的数据,总行数将是每个表总行数的乘积(即,如果每个表有 10 行,则查询将返回 10,000,000 行)。该脚本内存不足,因为您的查询获取的数据比您实际感兴趣或使用的数据多很多倍。

对每个表使用单个查询只会获取您想要的数据,并且应该可以工作并且速度更快。

关于php - Mysql:提取多表中未链接数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542384/

相关文章:

php - 测试 php/mysqli 连接

php - 找出 PHP 和 MySQL 中销售额最高和最低的一天

php - 从时间戳中获取日期返回月份

php - 自定义 wordpress 主题 : layout images not displaying

php - Laravel Eloquent 5 表

php - 在另一个sql语句中重用资源

php - PHP检查xml文件是否包含特定标签

php - android 无法从 php 检索 JSON 数据

php - 编码问题

php - 尽管通过表单发布了数据,但空行仍被插入到数据库中