SELECT
S.carOwnerID ,
S.name,
S.mobile,
S.coopName,
S.VIN,
s.policyNO,
S.effectiveDate,
S.expiryDate,
s.plateNo,
(
CASE
WHEN s.num > 1 THEN
1
WHEN s.num = 1 THEN
0
END
) AS carState
FROM
(
SELECT
c.carOwnerID,
c.name,
c.mobile,
c.coopName,
c.VIN,
p.policyNO,
p.effectiveDate,
p.expiryDate,
c.plateNo,
count(p.PlateNo) AS num
FROM
customer C
LEFT JOIN policy P ON C.carOwnerID = P.carOwnerID
WHERE
date_add(
P.createTime,
INTERVAL 11.5 HOUR
) > NOW()
) s
WHERE
s.num > 0;
簡(jiǎn)單的用多表關(guān)聯(lián)是可以的,如果遇到高并發(fā),性能缺陷立即就出來
1 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
多表關(guān)聯(lián)并不意味著sql高性能,太復(fù)雜的SQL效率損耗并不比外部鎖等低,跟高并發(fā)也沒什么沖突。
建議把語句拆成簡(jiǎn)單語句,使用鎖和補(bǔ)償機(jī)制來保障事務(wù)性。
添加回答
舉報(bào)
0/150
提交
取消