我创建了一个函数changeIp()
来禁用记录并返回一条新记录。正如您所看到的,我正在使用3个SQL查询。
有没有更好的方法来减少SQL查询的数量?
function changeIp() {
// Find 1 record which is not disabled
$SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
$qIp = mysql_query($SQL) or die(mysql_error());
$qrow = mysql_fetch_assoc($qIp);
// Disable a record
$id = $qrow['id'];
$SQL = "UPDATE ip set disable = 1 WHERE id = $id";
mysql_query($SQL) or die(mysql_error());
// Return the next record
$SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
$qIp = mysql_query($SQL) or die(mysql_error());
$qrow = mysql_fetch_assoc($qIp);
return $qrow['ip'];
}
答案 0 :(得分:0)
你应该使用“mysqli”或php,但这与你的问题不同。
您的查询没问题。您无法在单个语句中真正执行update
和select
。您可以使用ip(id, disable)
上的索引来提高效果。并且,ip(disable, id)
上的索引也可能是有益的,具体取决于许多因素。