我有一个简单的问题。
更快的性能是什么?
A)空白“插入”,自动增加到 INNODB 。 (表中只有1列,id(int))并通过PHP函数mysql_insert_id()返回最后一个id;
$db=mysql_query("insert into `system_id` () VALUES()",$GLOBALS["dbspojenie"]);
$id = mysql_insert_id();
return $id;
B)UPDATE id和之后,从同一行中选择那个id? (的 MYISAM )
$db=mysql_query("UPDATE `system` SET `id`=`id`+1",$GLOBALS["dbspojenie"]);
$db=mysql_query("select `id` from `system`",$GLOBALS["dbspojenie"]);
while($zaznam=mysql_fetch_array($db)):
$id=$zaznam["id"];
endwhile;
return $id;
由于行锁定,我在A)中使用了INNODB。
这只是一个问题,谢谢你的回答。 :)
答案 0 :(得分:1)
根据您的代码,我认为第一个INNODB示例会更快。在第二个示例中,在第一个示例中,您有UPDATE和SELECT与一个INSERT。
不要忘记MYISAM使用table level locking对比INNODB的行级锁定。如果您从表中获得大量读数,我会使用MYISAM,但在其他情况下(如此)我更喜欢INNODB。
正如Mark在上面的评论中所述,选择没有LIMIT的表会选择完整的表。现在想想10亿行表。什么是更快:选择10亿行还是1个插入?