Limit для определения существования значения???

Sirius

PHP+MySQL=LOVE
Limit для определения существования значения???

Всем Привет :)

Задача - выяснить о существовании в таблице определенного значения поля - есть или нету.
Например:
id,user,hits,ip - есть ли user='phpclub'

Есть два способа:

Первый определять ... count(id) where user='phpclub' ...
Второй: .. id where user='phpclub' limit 1

Я прошу подсказать какой запрос будет более оптимальным из них (или если есть другой оптимальный и быстрый способ, то прошу подсказать)

ИМХО мне второй способ нравится - так как я понимаю, мускулы будут ходить по таблице, пока одну запись не найдут - это ведь значительно увеличит скорость при больших таблицах - или я не прав???
 

Кром

Новичок
>или я не прав???

Что мешает тебе проверить это утверждение? :)
 

Popoff

popoff.donetsk.ua
If you are selecting only a few rows with LIMIT, MySQL will use indexes in some cases when it normally would prefer to do a full table scan.
As soon as MySQL has sent the first # rows to the client, it will abort the query.
COUNT(*) on a single table without a WHERE is retrieved directly from the table information. This is also done for any NOT NULL expression when used with only one table.
imho, в неуникальных индексах хранится информация о том, сколько строк соответствует этому индексу, т.е. count по индексированному полю можно посчитать без просмотра таблицы. Но только где это написано в документации я быстро найти не смог. Правда, документация у меня музейная.. Может, в новой написано...

Проверить это вообще-то не очень простая задача: нужно завести большую таблицу, попытаться посчитать в ней разные значения, которых много или мало;

Лично я предпочел бы limit, потому что для него явно написано, что он will abort the query, а для count что-то не видно такого....
 

Sirius

PHP+MySQL=LOVE
count(*) берётся из кеша, но только если нету условий поиска - а у меня есть - это по полю со значением.

Я сейчас юзаю и то и другое в одном запросе :)
 
Сверху