【问题标题】:MYSQL SELECT in SELECT query with large data: request timed out带有大数据的 SELECT 查询中的 MYSQL SELECT:请求超时
【发布时间】:2021-11-13 11:00:04
【问题描述】:

以下查询适用于少量数据,但对于大型数据,我得到 1001 The request timed out 错误。 在我想通过开关订购之前,我需要这个查询。 谁能有更好的解决方案?

 SELECT t.azon, 
        parent_id,
        tul, 
        nev, 
       szures,( SELECT EXISTS ( 
                               SELECT * 
                               FROM 1_tulajdonsagkoto tk 
                               WHERE tk.tulajdonsag_id = t.azon AND tk.termek_id = 1238 LIMIT 1)) AS switch 
FROM 1_tulajdonsagok t 
LEFT JOIN 1_tulajdonsagkat k ON t.parent_id = k.azon

【问题讨论】:

  • 您能否提供表描述、一些数据和预期结果,为您的查询运行解释?
  • 当我重新索引所有使用的字段时它解决了

标签: mysql large-data


【解决方案1】:
(SELECT EXISTS
 (SELECT *
  FROM 1_tulajdonsagkoto tk
  WHERE tk.tulajdonsag_id = t.azon
    AND tk.termek_id = 1238
  LIMIT 1)) AS SWITCH

这使得 N+1 查询问题。所以我们有两种解决方案:

  • 将此移动到代码中的另一个查询中。您可以在代码中映射“SWITCH”值。
  • 在主查询之前将此查询移动到临时表中,然后将主查询左连接到临时表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多