【问题标题】:How to fix "The SELECT would examine more than MAX_JOIN_SIZE rows" problem?如何解决“SELECT 将检查超过 MAX_JOIN_SIZE 行”的问题?
【发布时间】:2019-05-29 12:43:03
【问题描述】:

我正在使用 MySQLi Procedural 从 MYSQL 数据库运行查询。我只看到了使用 MySQLi 面向对象的代码是如何做到的。

它在本地主机上完美运行,但在远程服务器上我收到一条错误消息,说我有超过 MAX_JOIN_SIZE 行。我用什么代码来修复这个错误?

我查看了所有与此错误有关的页面,虽然我知道问题所在,但我不知道如何解决它。我见过的所有示例都使用 MySQLi 面向对象的代码。我已经尝试限制(LIMIT 30)返回的记录数,但这没有任何区别。

<?php
$con=mysqli_connect("localhost","******","******","ps10");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query_rs4 = "SELECT * FROM  student_data INNER JOIN users ON student_data.class = users.class INNER JOIN ext_writing_tbl ON student_data.id = ext_writing_tbl.id";

$rs4 = mysqli_query($con, $query_rs4)or die( mysqli_error($con) );
$row = mysqli_num_rows($rs4);
echo "There are " . $row . " students in this class";
?>

这是完整的错误消息。

SELECT 将检查超过 MAX_JOIN_SIZE 行;检查您的 WHERE 并使用 SET SQL_BIG_SELECTS=1 或 SET MAX_JOIN_SIZE=# 如果 SELECT 没问题。

它应该输出到一个表中。

【问题讨论】:

  • 您可以更改数据库配置选项吗?
  • 运行。尽可能快地从该主机运行。超卖超乎想象,你的问题才从这里开始
  • 最有可能的索引在这里会有所帮助.. 发布表结构 SHOW CREATE TABLE tableEXPLAIN query .. 但它接缝你正在选择一个可能的大结果集..
  • 大约有 1200 条记录。如果我限制记录数,它不起作用。问题是我加入了 3 个表。

标签: mysql


【解决方案1】:

我现在确定这是在服务器上设置的,超出了我的控制范围。那么如何编写一个不使用三个表的查询(两次使用 INNER JOIN)?

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多