Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的sql查询有改进吗?_Php_Mysql - Fatal编程技术网

Php 我的sql查询有改进吗?

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

有没有其他方法来删除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['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秒被认为是时间上的巨大差异吗?