我有一个超过300 000行的表,我需要为列'id'选择最高值.通常,我会这样做:
SELECT id FROM my_table ORDER BY id DESC
Run Code Online (Sandbox Code Playgroud)
...但这会导致查询速度慢,我不想使用它.有没有不同的方法来解决这种情况?id是自动增量和主键.
稍后编辑:我的完整代码似乎写得很糟糕,因为我从你的评论中扣除了.下面我发布了我正在使用的代码示例和表格.你能否建议一种正确的方法将table_x的最后一个ID + 1插入两个表中(包括table_x本身).我必须提到脚本将不止一次运行.
TABLE_X TABLE_Y
------------ ----------
id_x | value id_y | id_x
------------ ----------
1 | A 1 | 3
2 | B
3 | C
<?php
for($i=0; $i<10; $i++){
$result_x = mysql_query('SELECT id_x FROM table_x ORDER BY id_x DESC');
$row_x = mysql_fetch_array($result_x);
$next = $row_x['id_x'] + 1;
mysql_query('INSERT INTO table_x(id_x) VALUES("'.$next.'")');
mysql_query('INSERT INTO table_y(id_x) VALUES("'.$next.'")');
}
?>
Run Code Online (Sandbox Code Playgroud)
dus*_*uff 13
稍微好一些:
SELECT id FROM my_table ORDER BY id DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
显着更好:
SELECT MAX(id) FROM my_table
Run Code Online (Sandbox Code Playgroud)
这是您必须使用的正确代码。
mysql_query('INSERT INTO table_x(id_x) VALUES(NULL)');
$id = mysql_insert_id();
mysql_query("INSERT INTO table_y(id_x) VALUES($id)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11653 次 |
| 最近记录: |