2016-09-11 11 views
1

私は巨大なメンバーデータベースを持っています。私は10の名前があるとしましょう。 これらのメンバーの最後に見た値をメンバーテーブルから最も速く取得する必要があります。私は試してみましたmySQL - クエリで多くのORのoparatorsを使用するより良い方法はありますか?

SELECT lastseen FROM members WHERE 
name='Pierce' OR 
name='John' OR 
name='Steven' OR 
name='James' OR 
name='Ernie' OR 
name='Stuart' OR 
name='Blake' OR 
name='Shaun' OR 
name='Pat' OR 
name='Lola' 

しかし、クエリの多くのORのoparatorsを使用してプロの方法と遅い、より良い方法がありますか?

答えて

8

使用IN:MySQLで

SELECT lastseen 
FROM members 
WHERE name IN ('Pierce', 'John', . . .) 

IN代わりのOR Sを使用することにしてもパフォーマンス上の利点があります。 MySQLは値を検索するためのバイナリツリーを作成します(定数であると仮定します)。これにより処理速度が向上します。

+0

を参照してくださいありがとうございます。私がジョンを検索すると、ジョニーも選択されますか? また、私は今年のStackoverflowのトップユーザー

+0

@canertaşdemirによって答えられるのは幸運です。 。 。これは正確な検索で、通常は '='と全く同じです(異なる照合がある場合などに違いが出る可能性があります)。 –

2

使用SQLのINキーワードは:

SELECT lastseen FROM members WHERE 
name IN ('Pierce', 'John', 'Steven', ...); 

PHPを使用して、準備された文とバインドパラメータを使用することを忘れないでください。 https://secure.php.net/manual/en/pdo.prepare.php

関連する問題