2

この select ステートメントを使用して、データベース (MySQL) から名前でレコードを読み取ります。

select * from table where name = 'xxx'

しかし、1 つの http リクエストに何百もの名前があるため、上記のステートメントを使用すると、何百もの select を発行する必要があります。または、MySQLselect .. inを使用して SQL 呼び出しを減らします。

しかし、それでも遅すぎます。それで、私の目的を達成するためのより良いアプローチはありますか? 前もって感謝します!

4

2 に答える 2

1

where条件で使用している場合は、最初に「name」にインデックスを付ける必要があります。そして、より多くの条件があり、どの列がインデックスを持つことができるかをより多く把握しようとする場合。

2番目にINクエリを使用すると、データベース呼び出しを最小限に抑えることができます。

select * from table where name IN ( 'xxx', 'syz', 'abc',....);
于 2013-01-23T06:30:39.537 に答える
0

合計名をチャンクに分割し、それらのチャンクをselectステートメントで使用すると、問題が修正されると思います。まあ言ってみれば

$names = array($n1,$n2...);
$totalnames = count($totalnames);
$chunksize = 50;   
$totalChunks = ceil($totalnames/$chunksize);
for($i=0;$i<$totalChunks;$i++)
{
  $j = $chunksize*$i;
  for($k=$j;$k<=$j;$k++)
  {
    select statement with in
   }
}
于 2013-01-23T06:31:00.483 に答える