开发者

Is there an improvement for my sql query?

is there any way to remove the MAX with something else, maybe the ASC LIMIT 1 to decrease database throttling? My query gets th开发者_StackOverflow中文版e maximum id and adds 1 to it.

This is my query:

$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();


What does the database tell you about your query? If id is indexed then

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)


This is fine. adding limit 1 isn't going to give any noticeable performance improvements.

This shouldn't cause any kind of issues, are you having problems with this particular query?


The SQL MAX() function will automatically look for just one result. There's no need of LIMIT it in any way. If you want to improve that query try setting ID as index.


SELECT ID + as maxidpost FROM wp_posts ORDER BY ID DESC LIMIT 1; or If the table have Auto_increment ID SHOW TABLE STATUS LIKE 'wp_posts'; There should be a field called Auto_increment which should be exactly MAX(ID) + 1;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜