我将使用此 select 语句按名称从数据库(MySQL)中读取记录:
select * from table where name = 'xxx'
但是我在一个http请求中有数百个名字,所以如果我使用上面的语句,我必须发出数百个select。或者我只是使用 MySQLselect .. in
来减少 sql 调用。
但是还是太慢了。那么,有更好的方法来实现我的目的吗?提前致谢!
如果您在 where 条件下使用,您应该在“名称”上有索引。如果您有更多条件,请尝试找出更多哪些列可以具有索引。
第二件事使用 IN 查询它将解决最小化您的数据库调用。
select * from table where name IN ( 'xxx', 'syz', 'abc',....);
我认为,如果您将总名称分成块,然后在 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
}
}