Какой самый быстрый способ проверить, что запись существует в базе данных? - PullRequest
6 голосов
/ 27 сентября 2011

Я ищу самый быстрый способ проверить, существует ли запись ...

Всю жизнь я делал что-то подобное ...

SELECT COUNT(`id`) FROM `table_name`

Некоторые люди не используют COUNT(id), но COUNT(*). Это быстрее?

А как же LIMIT 1?

P.S. Конечно, под id я имел в виду первичный ключ.

Спасибо за совет!

Ответы [ 2 ]

7 голосов
/ 27 сентября 2011

В большинстве случаев COUNT(*) быстрее, чем COUNT(id) в MySQL (из-за того, как выполняются запросы группирования с COUNT(), он может быть оптимизирован в будущих выпусках, поэтому обе версии будут работать одинаково).Но если вы хотите узнать, существует ли хотя бы одна строка, вы можете использовать EXISTS

simple:

( SELECT COUNT(id) FROM table_name ) > 0

немного быстрее:

( SELECT COUNT(*) FROM table_name ) > 0

намного быстрее:

EXISTS (SELECT * FROM table_name)
5 голосов
/ 27 сентября 2011

Если вы не беспокоитесь о точности, explain select count(field) from table невероятно быстр.

http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/

Эта ссылка объясняет разницу между count(*) и count(field). В случае сомнений count(*)

Что касается проверки того, что таблица не пуста ...

SELECT EXISTS(SELECT 1 FROM table)

...