可以放在相关子查询中而不是join中吗?是否有t1_值要检查?他/她在问题中没有这样说。如果可以的话,我会给你比+1多得多的答案。我遇到了完全相同的问题,这个解决方案非常有效。来自MSSQL/Oracle的背景,人们认为明智的做法是尽可能避免相关子查询,这

可以放在相关子查询中而不是join中吗?是否有t1_值要检查?他/她在问题中没有这样说。如果可以的话,我会给你比+1多得多的答案。我遇到了完全相同的问题,这个解决方案非常有效。来自MSSQL/Oracle的背景,人们认为明智的做法是尽可能避免相关子查询,这,sql,performance,join,Sql,Performance,Join,可以放在相关子查询中而不是join中吗?是否有t1_值要检查?他/她在问题中没有这样说。如果可以的话,我会给你比+1多得多的答案。我遇到了完全相同的问题,这个解决方案非常有效。来自MSSQL/Oracle的背景,人们认为明智的做法是尽可能避免相关子查询,这是非常违反直觉的,但它是有效的。环顾四周,这可能是因为MySQL将连接处理为嵌套循环。即使使用索引,查询仍然需要1到2秒的时间才能达到50个结果限制。我会尝试用你的建议重写这个大方法。谢谢 SELECT t1_id, t2_name, t3_n


可以放在相关子查询中而不是join中吗?是否有t1_值要检查?他/她在问题中没有这样说。如果可以的话,我会给你比+1多得多的答案。我遇到了完全相同的问题,这个解决方案非常有效。来自MSSQL/Oracle的背景,人们认为明智的做法是尽可能避免相关子查询,这是非常违反直觉的,但它是有效的。环顾四周,这可能是因为MySQL将连接处理为嵌套循环。即使使用索引,查询仍然需要1到2秒的时间才能达到50个结果限制。我会尝试用你的建议重写这个大方法。谢谢
SELECT t1_id, t2_name, t3_name, t4_name, t5_name, 
       t6_name, t7_name, t8_name, t9_name 
FROM t1 
  LEFT JOIN t2 ON (t1_id = t2_id) 
  LEFT JOIN t3 ON (t3_id = t1_id) 
  LEFT JOIN t4 ON (t4_id = t1_id)
  LEFT JOIN t5 ON (t5_id = t1_id)
  LEFT JOIN t6 ON (t6_id = t1_id) 
  LEFT JOIN t7 ON (t7_id = t1_id)
  LEFT JOIN t8 ON (t8_id = t1_id)
  LEFT JOIN t9 ON (t9_id = t1_id)
SELECT t1_id, 
    (select t2_name from t2 where t1_id = t2_id), 
    (select t3_name from t3 where t1_id = t3_id), 
    (select t4_name from t4 where t1_id = t4_id), 
    (select t5_name from t5 where t1_id = t5_id), 
    (select t6_name from t6 where t1_id = t6_id), 
    (select t7_name from t7 where t1_id = t7_id), 
    (select t8_name from t8 where t1_id = t8_id), 
    (select t9_name from t9 where t1_id = t9_id) 
FROM t1 
SELECT  t1_id, t2_name 
FROM    t1 LEFT JOIN t2 ON (t1_id = t2_id)
union 
SELECT  t1_id, t3_name 
FROM    t1 LEFT JOIN t3 ON (t1_id = t3_id)
Select <your fields> from
(
Select * from t1 where t1_id = t1_value
) t1

Inner join t2
on t1.ID = t2.ID
...
SELECT t1_id, 
        (select t2_name from t2 where t1_id = t2_id), 
        (select t3_name from t3 where t1_id = t3_id), 
        (select t4_name from t4 where t1_id = t4_id), 
        (select t5_name from t5 where t1_id = t5_id), 
        (select t6_name from t6 where t1_id = t6_id), 
        (select t7_name from t7 where t1_id = t7_id), 
        (select t8_name from t8 where t1_id = t8_id), 
        (select t9_name from t9 where t1_id = t9_id)  FROM t1