在深入研究這個問題之前,首先我將解釋這種情況。我有兩個表,如下所示:MySQL根據另一個表中的數據從一個表中返回結果
USERS TABLE
user_id
username
firstName
lastName
GROUPS TABLE
user_id
group_id
我想找回誰的名字的所有用戶是LIKE「%FOO%」,誰是GROUP_ID一組的一部分=「givengid」
因此,查詢想是這樣的:
SELECT user_id FROM users WHERE firstName LIKE '%foo'"
我可以做一個用戶定義的SQL函數,如ismember(USER_ID,GROUP_ID)如果用戶是該組的一部分,0,如果他們將返回1不在上述select語句中的WHERE子句中。但是,這意味着對於名字與標準匹配的每個用戶而言,必須通過其他數千個其他記錄運行另一個查詢才能找到潛在的匹配條目。
用戶和組表將分別有幾十萬條記錄。使用用戶定義的函數方法還是使用UNION語句運行查詢更傳統?如果UNION方法最好,那麼帶有union聲明的查詢將是什麼樣子?
當然,我會運行基準測試,但我只想對這種情況的解決方案的可能範圍以及通常最有效/最有效的解決方案有所瞭解。
好奇,INNER JOIN和just JOIN有什麼區別? – user396404 2010-09-21 13:48:16
沒有區別,JOIN是INNER JOIN的語法糖。 – 2010-09-21 15:18:45