2011-01-28 10 views
0

ここに私のクエリ例があります。MySQL、短いWHEREクエリ

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

WHEREの部分はすばやくありますか?それは本当にパフォーマンスの違いをすることはありませんORの順序と非常に似ています実行計画には、このクエリを変換するクエリオプティマイザので

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

+1

を、 'IN'は書くことが迅速です。しかし、パフォーマンスの違いはありません。これはマイクロベンチマーキングです。 SQLエンジンはスマートです。 – Nishant

+0

ありがとうございましたNishant – borayeris

答えて

5

あなたは、IN句を使用することができます。それは美学および/またはより少ないタイピング:)それが高速に実行された場合

+0

どちらが良いですか? INまたは\ 'id \' = '1'または\ 'id \' = '8'または\ 'id \' = '12'を使用する – borayeris

+0

彼らは同じです..私の編集を参照してください –

3

わからないのですが、それはよりきれいに読むことができる:

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

同じことを実行します。 – Quassnoi

+0

内部的には、クエリを実行するときに一括してORに変換されます。 –

+0

読みやすくするため、IN句を必ず使用します。 QuassnoiとMarkが指摘するように、パフォーマンスは同じになります。私はそれが同じだろうとはかなり確信していたが、違いがある場合はmysqlでわからなかった。私は別のSQLエンジンで動作しますが、その場合は同等であることがわかります。ほとんどの/すべてのSQLエンジンで同じように最適化されているとは思いますが、確かに分かりません。 –

1

が同じフィールドに対してwhere句に複数の潜在的な値をチェックするには、 INを使用する必要があります。あなたの例では

、あなたが使用します。

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

この機能には、また、サブクエリ、使用するのに便利です:確かに

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

2番目の例をありがとう。 – borayeris