复杂的MySQL Query需要永远执行

时间:2014-02-05 22:18:01

标签: php mysql join

我必须使用一些不太理想的数据库结构。 Table1包含2个Ids(我们称之为id1,id2)。这些ID链接到另一个表Table2中的2行。我想获得Table1的一些列,并使用id1和id2来获取Table2中的列。我是否真的必须连接同一个表两次以链接到不同的行,还是有另一种更有效的方法来执行此操作?我的查询需要20秒才能超过30秒。

SELECT t1.id1, t1.id2, t2.name, t3.name
FROM Table1 t1, Table2 t2, Table2 t3
WHERE t1.id1 = t2.id AND t1.id2 = t3.id AND t1.index = 2 

2 个答案:

答案 0 :(得分:0)

未经测试,但应该可以使用JOINS:

SELECT t1.id1, t1.id2, t2.name FROM 
FROM Table1 t1
JOIN Table2 t2 
ON t1.id1 = t2.id OR t1.id2 = t2.id 
WHERE t1.index = 2 

答案 1 :(得分:0)

如果您确实需要此Many-to-Many关系,请尝试JOIN

SELECT t2.id    AS t2_id, 
       t3.id    AS t3_id, 
       t2.name  AS t2_name, 
       t3.name  AS t3_name
  FROM Table1      t1
  JOIN Table2      t2
    ON t1.id1   =  t2.id
  JOIN Table3      t3
    ON t1.id2   =  t3.id
 WHERE t1.index =  2