Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将左连接转换为简单连接_Sql_Join_Subquery - Fatal编程技术网

Sql 将左连接转换为简单连接

Sql 将左连接转换为简单连接,sql,join,subquery,Sql,Join,Subquery,我的左联接子查询花费的时间更长。我如何隐藏它以加入 SELECT * FROM "TABLE_A" LEFT OUTER JOIN TABLE_B ON TABLE_A.mainid = TABLE_B.secondID LEFT JOIN (

我的左联接子查询花费的时间更长。我如何隐藏它以加入

SELECT  * FROM "TABLE_A" 
LEFT OUTER JOIN TABLE_B ON TABLE_A.mainid = TABLE_B.secondID       
LEFT JOIN (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
           SELECT secondID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
           FROM  TABLE_C                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
           WHERE thirdID = 21                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
          ) Z ON TABLE_A.mainid = Z.secondID 
WHERE "TABLE_A"."TRUEID" = 9 
   AND ((TABLE_A.USERNO IN (23)) 

首先,更简洁地编写查询:

SELECT *
FROM "TABLE_A" a LEFT JOIN
     TABLE_B b
     ON a.mainid = b.secondID LEFT JOIN    
     TABLE_C c
      ON a.mainid = c.secondID AND c.thirdID = 21 
WHERE a."TRUEID" = 9 AND a.USERNO IN (23);

然后考虑指标:

  • 表A(TRUEID、USERNO、mainid)
  • Table_B(secondID)
  • Table_C(secondID,thirdID)

用您正在使用的数据库标记您的问题。您知道左外连接和左连接是相同的吗?坚持使用其中一种方法可以使代码更清晰易懂。左连接和内连接是有原因的。两者都有独特的用途。如果查询的处理时间较长,而不是因为左联接或内部联接,则可能需要编制索引。检查您的实际执行计划,看看查询在哪里花费了最多的资源。“花费的时间”比什么长?这有什么关系?PS请在代码问题中给出一个--cut&paste&runnable代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。对于包含最少代码的错误,您可以给出“显示为OK”的代码,并通过“显示为not OK”的代码进行扩展。(调试基础。)用于包含DBMS/product和DDL的SQL,其中包括约束、索引和表格初始化。对于SQL性能,包括解释结果和统计信息。谢谢Gordon。感谢您的快速响应。