2

テーブルからいくつかの行を選択しなければならない状況があります....

表は次のようになります........

        id           Name          Age

        0011         name1          45
        0012         name2          67
        .
        . 
        .
        .
        0020         name10         100
        .
        .
        .
        .


         // id is a primary key varchar(4).......
         // name is varchar.....
         // age is int.......

0011 - 0020今、私の必要性は、または0020 - 0030.....のような範囲内の値を取得することです.この特定の範囲の開始と終了を生成することができます.

しかし、私が持っている疑問は

          Should I execute 10 SELECT queries based on the index values ?

例:-

           for(i=0;i<10;i++)
           {
                    //SQL Query to SELECT row WHERE id = '0011' LIMIT 0,1 
                    // next time it id to select would be '0012'
            }

また

           Should I include a single Query to SELECT ROWS using AND, OR , BETWEEN..etc..with limit 10..???

どっちが速い....???

最初のケースでは、一度に 1 行しか選択され、各クエリで多くの操作が行われず( 10 回のリクエストが悪役である場合)、 1 つのクエリのみが使用される 2 番目のケースでは混乱しますが、私は比較演算子を使用してvarchar主キーにオーバーヘッドが提供されていると信じています........

4

3 に答える 3

1

実際のコストは、複数のクエリを解析して実行することと、現在必要な、または必要になる可能性があるよりも多くのデータを取得することです。

一度に 10 を取得する場合のように、ページングしているように見える場合は、間を置いて一度にいっぱいのページを選択する必要があります。

場合によっては、クエリオプティマイザーの方が>= Start and <= Endよりも優れている場合がありますbetween start and endが、それ以外は、テーブルが非常に広い場合 (1 行に大量のデータがある場合) を除き、問題は見られません。

于 2012-06-24T11:42:24.277 に答える
0

シングルクエリは、データベースから他のクエリと比較してデータをフェッチするためのより高速な方法であり、forループを使用すると、各クエリに独自の実行時間があり、選択した方法に応じて実行されるため、非常に時間がかかります。

于 2012-06-24T11:50:48.190 に答える
0

SQL クエリを実行して、テーブル SELECT COUNT(*) FROM テーブルの結果を返すことができます。たとえば、次のようになります。

for ($i=0;$i<=$pages:$i++) {
$start=10*$i;
$sql="SELECT MIN(id), MAX(id) FROM TABLE WHERE LIMIT ".$start.",10";
}
于 2012-06-25T22:28:53.733 に答える