我沿着這些線路查詢:SQL,優化我的查詢:UNION VS OR
SELECT e.firstname, e.surname
FROM employees e, cities c
WHERE e.cityid = c.id
UNION
SELECT e.firstname, e.surname
FROM employees e, cities c
WHERE e.cityid = ''
UNION
SELECT e.firstname, e.surname
FROM employees e, cities c
WHERE e.cityid is null
這工作完全正常,但我不喜歡,我不得不重複自己多次(3次,由2個聯合分隔)。
因此我試圖寫這樣的查詢:
SELECT e.firstname, e.surname
FROM employees e, cities c
WHERE (e.cityid = c.id OR e.cityid = '' OR e.cityid is null)
它還工作完全正常,但相比與工會第一個查詢這是非常緩慢的。
所以有可能以另一種方式編寫查詢,所以我得到了第一個查詢的性能,而沒有多次重複自己。
謝謝。
你索引了列嗎?你用什麼後端數據庫? – Roger
'e.cityid =''':e.cityid是一個varchar或char鍵? – wildplasser
爲什麼3個分支中的2個在表格之間沒有任何連接條件?這個查詢實際上應該做什麼? –