2

でテーブルを作成しました

CREATE TABLE xy (
blub VARCHAR(50) NOT NULL,
z INT UNSIGNED NOT NULL,
PRIMARY KEY (blub)
)

'blub'列で一度に多くのエントリをクエリしたい。現在、私は単純なクエリを使用しています

SELECT blub, z FROM xy WHERE blub = '...'

これはよりもはるかに高速です

SELECT blub, z FROM xy WHERE blub = '...' OR blub = '...' OR '...

それをより速くし、すべてのクエリをマージする他の方法はありますか?

4

4 に答える 4

2
SELECT blub, z FROM xy WHERE blub in ('a','b','c')
于 2012-04-26T21:24:44.813 に答える
2

in句を試すことができます。高速になるかどうかはわかりませんが、より簡潔になることは間違いありません。例えば:

select blub, z from zy where blub in ('this', 'that', 'theother');

explainあなたの状況で実際に最速のものを教えてくれます。

于 2012-04-26T21:24:54.667 に答える
1

インデックスを追加する必要があります

CREATE TABLE xy ( 
blub VARCHAR(50) NOT NULL, 
z INT UNSIGNED NOT NULL, 
PRIMARY KEY (xy),
KEY (blub,z)
) 

テーブルにすでにデータが入力されている場合は、これを実行します

ALTER TABLE xy ADD INDEX (blub,z);

その後、SELECT blub, z FROM xy WHERE blub in ('a','b','c')より速くなります

于 2012-04-26T21:40:28.190 に答える
1

次のようにIN節を使用します。WHERE

SELECT blub, z 
FROM xy 
WHERE blub IN ('value1', 'value2', 'value3')

どちらがより良く/より速く実行される限り、クエリのクエリ実行プランを使用できます。Sql-server で、[実際の実行計画を含める] をクリックします。MySql では、関数を使用できますEXPLAIN

于 2012-04-26T21:25:54.487 に答える