gpt4 book ai didi

php - MySQL 错误 #1104 - SELECT 将检查超过 MAX_JOIN_SIZE 行;

转载 作者:行者123 更新时间:2023-11-29 06:43:27 25 4
gpt4 key购买 nike

我有一个小型非营利组织的捐助者和门票销售信息数据库。我正在尝试根据捐赠、购买季票或购买单程票的人快速导出邮件列表。 “entity”表是联系信息等,然后其他表包含有关捐赠的信息(年份、金额、支票日期等),并有一个“entityno”字段,与实体的主键相匹配.recordno.

这是我正在运行的查询:

SELECT *
FROM
entity
LEFT JOIN individual_donation ON entity.recordno = individual_donation.entityno
LEFT JOIN season_tickets ON entity.recordno = season_tickets.entityno
LEFT JOIN single_tickets ON entity.recordno = single_tickets.entityno
WHERE
entity.ind_org = 'ind' AND
entity.address1 <> "" AND
(individual_donation.year <> 'NULL'
OR season_tickets.year <> 'NULL'
OR single_tickets.year <> 'NULL')
GROUP BY entity.lastname
ORDER BY entity.lastname ASC

这个数据库在 BlueHost 上,我通过 PHPmyadmin 访问它。奇怪的是,当我在 PHPmyadmin 中预览查询时,查询运行得很好——它返回 216 行,我可以在 SQL 命令浏览器中查看所有行,并且它加载得很好。

问题是每次在查询结果操作下使用PHPmyadmin的“导出”命令,都会出现如下错误:

#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

每个表最多只有大约 300-400 行,所以我很惊讶我收到 MAX_JOIN_SIZE 错误。我也很奇怪,sql 查询按原样工作得很好,但在导出时不起作用??

我确信我可以做更好的 JOIN 等,但我不明白为什么查询运行良好,但就是不导出。

编辑:这是 EXPLAIN EXTENDED 结果

id  select_type table               type    possible_keys   key key_len ref rows    filtered    Extra
1 SIMPLE entity ALL NULL NULL NULL NULL 429 100.00 Using where; Using temporary; Using filesort
1 SIMPLE individual_donation ALL NULL NULL NULL NULL 221 100.00
1 SIMPLE season_tickets ALL NULL NULL NULL NULL 102 100.00
1 SIMPLE single_tickets ALL NULL NULL NULL NULL 217 100.00 Using where

更多信息:奇怪 - 我的虚拟主机不允许 mysql 用户使用 FILE 权限,所以我不能使用 EXPORT INTO。我尝试使用 ssh 访问,将查询运行到 > 到文件中,但出现 MAX_JOIN_SIZE 错误。我仍然不明白为什么它可以在浏览器中的 phpmyadmin 查询中正常工作,但不能在 phpmyadmin 中导出,也不能在命令行中工作。

最佳答案

更好地使用索引似乎已经解决了我的问题,尽管仍然不确定为什么。

我确保将三个引用表中的“entityno”列(实体表中对主键的引用)设置为索引。这似乎已经解决了在我的查询的某个中间步骤中导致大量返回行的问题。作为引用,这是现在的解释扩展结果:

id      select_type     table                   type    possible_keys   key             key_len ref                             rows    filtered        Extra
1 SIMPLE entity ALL NULL NULL NULL NULL 429 100.00 Using where; Using temporary; Using filesort
1 SIMPLE individual_donation ref entityno entityno 3 dakotask_ds1.entity.recordno 3 100.00
1 SIMPLE season_tickets ref entityno entityno 3 dakotask_ds1.entity.recordno 2 100.00
1 SIMPLE single_tickets ref entityno entityno 3 dakotask_ds1.entity.recordno 1 100.00 Using where

关于php - MySQL 错误 #1104 - SELECT 将检查超过 MAX_JOIN_SIZE 行;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com