Php MYSQLI能否独立于执行来准备语句?
我正在运行一个网站,使大量使用搜索功能。我正在探索加快和顺利搜索的方法 我的问题是,我是否可以声明一个Mysqli查询并独立于实际执行查询和绑定结果和参数来建立连接/准备 这样,我可以只声明一次查询和连接,从而节省一些处理时间。然后分别处理查询的参数和结果 下面的代码从表中选择x&y。这两个变量将始终是被选择的变量,并且连接将始终相同。下面代码中唯一变化的元素是绑定到?上的参数 循环遍历数组并对每个元素运行查询Php MYSQLI能否独立于执行来准备语句?,php,mysqli,Php,Mysqli,我正在运行一个网站,使大量使用搜索功能。我正在探索加快和顺利搜索的方法 我的问题是,我是否可以声明一个Mysqli查询并独立于实际执行查询和绑定结果和参数来建立连接/准备 这样,我可以只声明一次查询和连接,从而节省一些处理时间。然后分别处理查询的参数和结果 下面的代码从表中选择x&y。这两个变量将始终是被选择的变量,并且连接将始终相同。下面代码中唯一变化的元素是绑定到?上的参数 循环遍历数组并对每个元素运行查询 foreach($array as $key) { $stmt->bi
foreach($array as $key) {
$stmt->bind_param('s',$key);
$stmt->execute();
$stmt->bind_result($x, $y);
while ($stmt->fetch()) {
//LALALALALAL
}
$stmt->free_result();
}
这种方法有什么固有的问题吗?
这样做值得费心吗?它有益吗
提前感谢。当然可以,这是事先准备好的声明的最大好处之一。。。一个prepare,db服务器将缓存准备好的查询,因此每次只需要使用新的bind值执行它,就像Mark所说的,当然可以。唯一的问题是,你的搜索不会得到任何显著的加速。当数据库搜索时,它们是I/O绑定的。优化所做的是节省CPU时间。然而,CPU很少成为搜索的问题——硬盘是导致问题的原因之一。基本上,您所考虑的提前准备优化是好的。它将优化实际搜索到什么程度,这只是个疑问。
foreach($array as $key) {
$stmt->bind_param('s',$key);
$stmt->execute();
$stmt->bind_result($x, $y);
while ($stmt->fetch()) {
//LALALALALAL
}
$stmt->free_result();
}