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