为什么以下查询会永远显示结果?

时间:2015-01-06 17:35:38

标签: mysql

    SELECT     ba.bug_id, 
               ba.bug_when, 
               b.short_desc 
    FROM       bugs_activity ba 
    INNER JOIN bugs b 
    order BY   bug_id DESC 
    LIMIT      10

上述查询应返回2个表中的数据(bugs_activity& bugs)。但它只是进入一个无限循环。可能有什么不对?

在查询之前使用EXPLAIN返回以下结果 -

enter image description here

1 个答案:

答案 0 :(得分:2)

可能会发生这种情况,因为查询中没有关于哪些字段构成此关系的信息,因此结果集太大并执行超时。

您需要在join子句中告知BUGS中哪些字段与BUGS_ACTIVITY相关。

例如,如果您的表Customer_Contact中有两个表Customer和Customer_Contact,则您有一个字段,该字段是表Customer的外键。您需要在查询中提供此信息:

SELECT cus.*
  FROM customer cus
 INNER JOIN customer_contact con ON con.customer_id = cus.id

这只是一个例子,如果您提供两个表中存在哪些字段,它可能会有所帮助。我可以想象这样的事情:

SELECT     ba.bug_id, 
           ba.bug_when, 
           b.short_desc 
FROM       bugs_activity ba 
INNER JOIN bugs b ON ba.bug_id = b.id
order BY   bug_id DESC 
LIMIT      10