LINUX.ORG.RU

Вопрос по скорости запроса MySQL: как сосчитать кол-во записей


0

0

В общем, мне нужно посчитать количество записей в таблице MySQL. Я пока делаю это так:

SELECT id FROM test_table;

(id - это PRIMARY KEY с AUTO_INCREMENT)

А потом соответственно считаю количество строк в результате:

$n = mysql_num_rows($result);

Так вот, вопрос: со временем, когда записей в таблице станет много, не будет ли извлечение всех записей из таблицы занимать слишком много времени? Если будет, то какой есть более быстрый способ сосчитать количество строк в таблице?

anonymous
Ответ на: комментарий от theserg

Огромное спасибо за совет, можно даже и без "as amount", а вот другой вопрос. Я создал запись при помощи INSERT, а можно ли каким-то образом узнать, какой id присвоился этой записи? (столбец id, напомню, - AUTO_INCREMENT)

Можно было бы сделать SELECT со всеми изв.столбцами, но это как-то некошерно и ненадежно, как будто бы.

anonymous
()
Ответ на: комментарий от stalcker

Огромное, огромное спасибо! LAST_INSERT_ID() это то, что нужно!

2 the_serg, не, сорри, не годится, я тоже думал о таком варианте, но это тоже как-то корявенько, а тем более вдруг кто-то (хоть это маловероятно) создаст другую запись в это же время?..

anonymous
()
Ответ на: комментарий от anonymous

>Огромное, огромное спасибо! LAST_INSERT_ID() это то, что нужно!

Пожалуйста.

stalcker
()
Ответ на: комментарий от anonymous

Ой, последний вопрос: а можно SELECT LAST_INSERT_ID() скомбинировать в одном запросе с INSERT? Пробовал ставить точку с запятой, не помогает.

anonymous
()
Ответ на: комментарий от anonymous

Пусть у тебя есть две таблицы table1 и table2, в 1-й таблице code у тебя auto_increment и тебе нужно во второй таблице такое же значение code, вот пример

INSERT INTO talbe1 ( subject_name) VALUES ( 'some_data1');

INSERT INTO table2 ( code, data) VALUES ( LAST_INSERT_ID(), 'some_data2');

stalcker
()
Ответ на: комментарий от anonymous

Нет, я плохо выразился: можно ли так сделать, чтобы в одном запросе проходил и INSERT, и в результатах этого же запроса возвращался LAST_INSERT_ID() ?

anonymous
()
Ответ на: комментарий от stalcker

Ну ладно, все равно спасибо. Значит, два последовательных запроса, вызова mysql_query()

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.