因此,假設我正在構建該聯繫人管理系統。有一個USER表和一個CONTACT_INFO表。 對於每個USER,我可以有零個或多個CONTACT_INFO記錄。按照我定義它的方式,我在CONTACT_INFO表中設置了一個外鍵以指向相關的USER記錄。創建最佳查詢來查找僅在一個表中的記錄
我想要搜索所有沒有CONTACT_INFO記錄的USER記錄。
我希望可以這樣做:
SELECT * FROM user u WHERE u.user_id NOT IN (SELECT DISTINCT c.user_id FROM CONTACT_INFO);
我擔心的是,隨着表增長,這個查詢的性能可以顯著降低。
我在玩的一個想法是在USER表中添加一列,表明它是否有任何CONTACT_INFO記錄。另外,我想知道,如果在向CONTACT_INFO中插入任何記錄時,DBMS必須驗證記錄是否存在,那麼爲了驗證和更新它,已經訪問該記錄,當我更新CONTACT_INFO記錄時不應該成本高昂,性能明智。
一如既往,讚賞反饋。
您應該嘗試下面的幾個選項,然後確定每個選項的查詢計劃和性能,並選擇最好的一個。 – 2009-06-16 16:51:26
我們在談論哪些DBMS? – AakashM 2009-06-16 16:55:07