2014-01-21 3 views
0
SELECT id FROM store ORDER BY id DESC LIMIT 1 
SELECT COUNT(*) FROM store 

У меня есть таблица, идентификатор - автоинкремент. Я пытаюсь сосчитать строки, так как мой идентификатор автоматическое приращение от 1, так что последний идентификатор будет иметь то же значение строкMysql select last id vs COUNT (*)

Я задавался вопросом, который запрос может иметь более высокую производительность ВЫБРАТЬ последний идентификатор или использовать COUNT

+1

что вы удаляете одну строку? –

+1

'SELECT COUNT (*) FROM store' является подходящим – Damith

+0

@Phil. , , Вопрос конкретно задает «Я пытаюсь подсчитать строки», а не получить последний id. –

ответ

4

Первый может работать лучше.

Вторая точность, и вы должны ее использовать. У идентификаторов не гарантируется отсутствие отверстий. При удалении обязательно будут пробелы.

Предполагая, что id является первичным ключом, оба могут быть выполнены с использованием индекса, который должен быть быстрее, чем чтение всей таблицы.

+0

@Phil. , , Это еще одна причина. –

0

Если вы используете MyISAM, тогда идите с COUNT точно! Это значение сохраняется для каждой таблицы в любом случае, поэтому даже не нужно ссылаться на содержимое таблицы. Но для InnoDB это совсем другое. Он должен фактически подсчитывать строки. Но все же я бы использовал COUNT. Не так часто для InnoDB, хотя ...

0

Я бы пошел с count(*), так как это оптимизировано в MySQL, и это гарантирует правильный ответ. Вы всегда можете удалять строки, поэтому полагаться на последние id не будет хорошей идеей.

Смежные вопросы