想象一下,我有一個大型網站的數據庫,該網站有一個名爲「users」的表,其中包含大量記錄。當我執行查詢如SELECT * FROM users WHERE username='John'
我的理解是(忽略緩存等)數據庫將導航索引並找到名爲John的用戶。想象一下,這個查詢返回100萬個結果,我只對25歲的約翰用戶感興趣,所以我執行另一個查詢:SELECT * FROM users WHERE username='John' AND age=25
'和'和'or'如何在SQL中工作
這是如何工作的?它是否遍歷所有名爲John的用戶,並只查找那些年齡匹配爲25的用戶,還是有更好的方法來做到這一點?我假設這是數據庫和存儲引擎的具體情況,所以我們可以假設我在InnoDB中使用MySQL。
從我所瞭解的情況來看,它會針對每一行都進行比較,而不是針對每個AND/OR條件重新評估...如果您要使用HAVING子句,那將成爲另一個故事 – 2014-12-08 02:30:06
您可以使用查詢計劃器 – 2014-12-08 02:32:20