1

簡単な紹介:

1つのテーブルがt1( id(mediumint), string(varchar(45) )両方とも主キーに属しています。

この表で5つの文字列を見つける必要があります。そして、このテーブルは5M+行のようなものです。

何が速いでしょうか?

  1. を使用した1つのクエリIN()

    SELECT id, string FROM t1 WHERE string IN (value1,value2,...,value5)
    

    また

  2. 値ごとに1つずつ、5つのクエリ:

    SELECT id, string FROM t1 WHERE string = value1
    SELECT id, string FROM t1 WHERE string = value2
    '
    '
    SELECT id, string FROM t1 WHERE string = value5
    

アプリケーションサーバーとデータベースサーバーは、同じマシン上ではなく、同じネットワーク上(100Mビットまたは1Gビット、まだ不明)になります。

4

3 に答える 3

5

ほとんどの場合、単一のクエリを使用すると、複数のクエリを使用するよりも高速になる可能性があります。これは、解析、クエリの送信、および複数の個別の応答の受信のオーバーヘッドを回避し、より優れた最適化を可能にするためです。疑わしい場合は、プロファイルします。

クエリの長​​さにも注意してください。ほとんどのデータベースサーバーには、クエリ文字列の長さに制限があります。したがって、値のリストが長い場合は、それらをバッチで送信する必要があります。

于 2012-08-15T21:54:38.030 に答える
2

IN()を使用した1つのクエリはより高速であるはずです。最初の列が「string」のインデックスがあることを確認してください。

于 2012-08-15T21:51:58.200 に答える
1

複数のクエリを使用する方が、クエリで複雑で場合によっては複数のJOINが必要な場合にのみ、個別のテーブルから個別の結果を取得してアプリケーションのメモリに結合するよりも高速で効率的です。主に転送時間/帯域幅を節約する方法として。
1回おきに、単一のクエリを実行するのが最善です。

于 2012-08-15T21:56:02.487 に答える