我有一個查詢,但工作,但需要永遠。我的「姓氏」列是3個選擇查詢。我知道必須有更好的方式來做到這一點。SQL效率 - 3嵌套選擇作爲列滯後
SELECT LOANS.BALANCE, TAXES.TAX_DUE,
(SELECT SBAOFFCR.LAST_NAME
FROM SBAOFFCR
WHERE SBAOFFCR.INITIALS =
(SELECT PMGTMAIN.OFFICER
FROM PMGTMAIN
WHERE PMGTMAIN.BOC_NUM_STRING = LOANS.BOC_NUM_STRING
AND PMGTMAIN.SEQ =
(SELECT MAX(SEQ)
FROM PMGTMAIN
WHERE PMGTMAIN.BOC_NUM_STRING
= LOANS.BOC_NUM_STRING))) AS LastName
FROM LOANS
LEFT JOIN TAXES
ON LOANS.BOC_NUM_STRING = TAXES.BOC_NUM_STRING
WHERE LOANS.BALANCE > 0
PMGTMAIN
具有用於LOANS
和TAXES
每一個記錄數/多條記錄。
PMGTMAIN
在OFFICER
列員工intials可在SBAOFFCR
表被引用爲INITIALS
列和SBAOFFCR
表中有一欄LAST_NAME
這正是我需要爲每個記錄從LOANS/TAXES
加入。
我不能只從PMGTMAIN WHERE LOANS.BOC_NUM_STRING = PMGTMAIN.BOC_NUM_STRING
OFFICER
,它必須是MAX(PMGTMAIN.SEQ)
。就像我說的,我的查詢很有用,但花了10分鐘。
顯然你的貸款過度擴張,官員開始受到影響。 – Smandoli 2012-04-27 21:05:17
我無法評論你的SQL,但我同意可能有一種簡化的方法。但是,如果您的鏈接字段尚未到位,則可以通過將索引應用於鏈接字段來縮短時間。 – Smandoli 2012-04-27 21:10:36
用您正在使用的DBMS標記您的問題,並向我們提供您的SQL語句的執行計劃。此外,DDL將不勝感激,甚至更好:代表[SQL Fiddle](http://sqlfiddle.com/)。 – 2012-04-27 21:46:54