在SELECT
聲明:執行期間SQL SELECT語句實際執行的是什麼?
SELECT name
FROM users
WHERE address IN (addr_a, addr_b, addr_c, ...);
我們知道,它會選擇所有的人的名字,其地址是(addr_a,addr_b,addr_c,...)。但是我想知道它在執行這個語句時實際做了什麼。
例如,它是否搜索表中的每個元素以檢查其地址是否在(addr_a,...)中?
如果addr_a
,addr_b
太長,是否會減慢搜索過程?
有沒有關於推薦這些東西的材料?
編輯:我沒有指定RDBMS,因爲我想知道盡可能多的SQL實現。
再次編輯:在這裏我得到了有關MySQL和SQL Server的答案,我接受了「SQL Server」之一,因爲它是一個詳細的答案。歡迎索取關於其他RDBMS的更多答案。
你爲什麼不用'喜歡'? –
@Praveen我認爲'addr_x's這裏是實際地址的佔位符。 –
這取決於是否創建了「地址」索引 – arunmoezhi