我想知道哪种方法更有效,是只进行一次查询并将结果存储在一个数组中,然后使用 PHP 中的 in_array 函数检查该数组,还是每次需要检查值时都进行 MySQL 查询?
例如: 我创建了这个函数来将查询存储在一个数组中,因此这个查询只会进行一次。
private function carregaPermissoes(){
$query = mysql_query("SELECT permissao_nome FROM sisgrupopermissoes WHERE id_grupo = ".$this->getGid().";");
if (mysql_num_rows($query) > 0){
$array_permissoes = array();
while ($row = mysql_fetch_array($query)){
array_push($array_permissoes, $row["permissao_nome"]);
}
return $array_permissoes;
}
}
然后每次我需要检查它时我就使用这个函数:
public function checkPermissao($permissao){
$this->setPermissao($permissao);
if (in_array($this->getPermissao(), $this->getGrupoPermissao())){
return true;
}else{
return false;
}
}
这是一个好方法吗?还是每次需要检查时都进行查询更好?
最佳答案
SQL 查询慢,通常是继查询之后最常见的瓶颈 网络。您的功能可以简化为:
public function checkPermissao($permissao)
{
// The following line smells...
$this->setPermissao($permissao);
return in_array($this->getPermissao(), $this->getGrupoPermissao());
}
如果您担心 in_array
(本质上使用顺序搜索)引入的开销,您可以 flip haystack 数组并使用 array_key_exists相反。
关于php - 只进行一次查询并将其存储在数组中或每次都进行查询是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853686/