2

我将使用此 select 语句按名称从数据库(MySQL)中读取记录:

select * from table where name = 'xxx'

但是我在一个http请求中有数百个名字,所以如果我使用上面的语句,我必须发出数百个select。或者我只是使用 MySQLselect .. in来减少 sql 调用。

但是还是太慢了。那么,有更好的方法来实现我的目的吗?提前致谢!

4

2 回答 2

1

如果您在 where 条件下使用,您应该在“名称”上有索引。如果您有更多条件,请尝试找出更多哪些列可以具有索引。

第二件事使用 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 回答