SQL一:
SELECT
P.PK_PAYMENT_INST_ID,
P.FOREIGN_ID,
P.PAYMENT,
P.PAYMENT_DATE,
P.PAYMENT_NUMBER,
P.FLAG,
P.CONTRACT_ID,
(
select
C.Contract_Name
from CMCCOA_PROJECT_CONTRACT C where C.PK_CONTRACT_INST_ID = P.CONTRACT_ID
) as Contract_Name
FROM Cmccoa_project_Payment P
SQL二:
SELECT
P.PK_PAYMENT_INST_ID,
P.FOREIGN_ID,
P.PAYMENT,
P.PAYMENT_DATE,
P.PAYMENT_NUMBER,
P.FLAG,
P.CONTRACT_ID,
C.Contract_Name
FROM Cmccoa_project_Payment P left join CMCCOA_PROJECT_CONTRACT C on p.contract_id=C.PK_CONTRACT_INST_ID
以上两个都可以实现需要的查询,但是具体的区别(别说写法不同)是?和对效率的影响?
小生在plsql中算了一下时间都一样也(数据量不大)
望高手指点
------解决方案--------------------
C.PK_CONTRACT_INST_ID = P.CONTRACT_ID
这个是不是走索引的?
left join的效率会比较低,是两个表相连,然后取出特定的几个字段,关联的时候是两个表的所有字段都关联了
第一个只是相当于一个子查询
------解决方案--------------------
如果table2是个小表,用SQL一好,如果是个大表,用SQL二好。
------解决方案--------------------