Php 我的sql查询有改进吗?
有没有其他方法来删除MAX,比如ASC限制1,以减少数据库限制?我的查询获取最大id并向其中添加1 这是我的疑问:Php 我的sql查询有改进吗?,php,mysql,Php,Mysql,有没有其他方法来删除MAX,比如ASC限制1,以减少数据库限制?我的查询获取最大id并向其中添加1 这是我的疑问: $query = 'SELECT MAX(ID) +1 as maxidpost FROM wp_posts'; $result = mysql_query($query) or die(mysql_error()); while($row = mysql_fetch_array($result)) { echo 'p='. $row['maxidpos
$query = 'SELECT MAX(ID) +1 as maxidpost
FROM wp_posts';
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo 'p='. $row['maxidpost'];
}
mysql_close();
关于您的查询,数据库告诉您什么?如果id被索引,那么
mysql> explain select max(id) + 1 from times;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
1 row in set (0.18 sec)
mysql> explain select id from times order by id ASC limit 1;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | times | index | NULL | PRIMARY | 4 | NULL | 1 | Using index |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
1 row in set (0.00 sec)
这很好。添加限制1不会带来任何明显的性能改进
这不会导致任何类型的问题,您对此特定查询有问题吗?SQL MAX函数将自动只查找一个结果。没有必要以任何方式限制它。如果您想改进该查询,请尝试将ID设置为索引。从wp_posts ORDER BY ID DESC LIMIT 1中选择ID+作为maxidpost;
或者如果表格具有自动增量ID
显示表格状态,如“wp_posts”;
应该有一个名为Auto_increment的字段,它应该正好是MAXID+1 如果你用它来插入,你有没有在ID字段上尝试过自动递增?你有数据库节流吗?他似乎没有用它来插入,因为他正在打印它,请看代码是的,我有数据库节流…@Matthieu:显然。。。代码是查询的演示,而不是最终如何使用它@你打算如何使用ID+1值?如果您不打算使用该值进行插入,那么无论如何您的查询都很好,否则有更好的方法。因此,使用asc limit 1更快,对吗?但是,0.18秒被认为是时间上的巨大差异吗?