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中算了一下时间都一样也(数据量不大)
望高手指点
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中算了一下时间都一样也(数据量不大)
望高手指点
这个是不是走索引的?left join的效率会比较低,是两个表相连,然后取出特定的几个字段,关联的时候是两个表的所有字段都关联了
第一个只是相当于一个子查询
SELECT
P.ID,
P.A,
P.B,
P.C,
(
select
C.AA
from table2 C where C.FKID = P.ID
) as D
FROM table1 P SQL二:
SELECT
P.ID,
P.A,
P.B,
P.C,
C.D
FROM table1 P left join table2 C on C.FKID = P.ID 简化一下纯这样呢?那个效率更高一些呢?