Tôi có một bảng có hơn 300 000 hàng và tôi cần chọn giá trị cao nhất cho cột 'id'. Thông thường, tôi sẽ làm như sau:PHP chọn giá trị `id` lớn nhất từ bảng MySQL
SELECT id FROM my_table ORDER BY id DESC
... nhưng điều này sẽ khiến truy vấn chậm và tôi không muốn sử dụng. Có cách nào khác để giải quyết tình huống này không? id
là tăng tự động và khóa chính.
Chỉnh sửa sau: Có vẻ như mã đầy đủ của tôi được viết khá tệ, như tôi đã khấu trừ từ nhận xét của bạn. Dưới đây tôi đăng một mẫu mã tôi đang làm việc và các bảng. Bạn có thể đề xuất một cách thích hợp để chèn ID cuối cùng + 1 của table_x trong hai bảng (bao gồm cả table_x chính nó). Tôi phải đề cập rằng kịch bản sẽ chạy nhiều lần.
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.'")');
}
?>
'SELECT MAX (id)' – knittl
Um, 'SELECT MAX (id) làm id từ my_table'.id là một PK auto_increment, và do đó được lập chỉ mục vì vậy điều này sẽ rất nhanh. –
tại sao bạn cần id tối đa? –