2011-01-28 57 views
0

這是我的示例查詢。MySQL,Short WHERE查詢

SELECT * FROM `table` WHERE `id` = '1' OR `id` = '8' OR `id` = '12' 

WHERE部分有更快的方法嗎?

+1

當然,`IN`更快寫。但沒有性能差異。這是微觀基準。 SQL引擎很聰明。 – Nishant 2011-01-28 17:47:59

+0

謝謝Nishant – borayeris 2011-01-28 17:54:31

回答

5

你可以使用IN子句:

SELECT * 
    FROM `table` 
WHERE `id` IN ('1', '8','12') 

由於查詢優化器將這個查詢轉換成這將是非常相似的口服補液鹽就沒有真正的性能差異的序列的執行計劃。這是關於美學和/或更少的打字:)

+0

哪一個更好?使用IN或\'id \`='1'或\`id \`='8'或\`id \`='12' – borayeris 2011-01-28 17:49:57

+0

它們是一樣的..看我編輯 – 2011-01-28 17:56:49

3

,如果它跑得快不知道,但它可以讀取更乾淨:

SELECT * ... WHERE ID in ('1', '8', '12') 
1

要在where子句中檢查多個潛在價值爲同一領域,你需要使用IN

在您的例子,你可以使用:

SELECT * 
FROM `table` 
WHERE `id` IN (1, 8, 12) 

此功能也是使用子查詢,如有用:

SELECT * 
FROM `table` 
WHERE `id` IN (
    SELECT `id` 
    FROM `table2` 
)