Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: есть ли смысл ставить LIMIT

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
bambr32
Отправлено: 16 Марта, 2015 - 12:22:26
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Пытаюсь оптимизировать скорость работы БД, для чего там, где заранее известно количество необходимого количество результатов запроса ставлю LIMIT

В связи с этим возник такой вопрос: есть ли смысл ставить LIMIT 1 в тех запросах, где по определению всегда как максимум 1 строка в результатах выборки (в тех случаях, когда поиск проводится по Primary ключу с AUTO INCRIMENT). Понимает ли MySQL, что там в любом случае один ответ и сам останавливает поиск, или необходимо указывать ему это явно?
 
 Top
Мелкий Супермодератор
Отправлено: 16 Марта, 2015 - 12:34:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Для уникальный и первичных ключей планировщик сам знает, что строка по этому индексу будет только одна.

Но limit 1 имеет смысл писать - как часть самодокументируемого кода, акцент внимания, что в результате ждём только одну строку.


-----
PostgreSQL DBA
 
 Top
bambr32
Отправлено: 16 Марта, 2015 - 14:40:45
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Мелкий пишет:
Для уникальный и первичных ключей планировщик сам знает, что строка по этому индексу будет только одна.

Но limit 1 имеет смысл писать - как часть самодокументируемого кода, акцент внимания, что в результате ждём только одну строку.


ОК, спасибо, я тоже так думал, но лучше уточнить...
 
 Top
Sail
Отправлено: 16 Марта, 2015 - 14:53:07
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Мелкий пишет:
акцент внимания, что в результате ждём только одну строку

А если в результате чьей-либо невнимательности в таблице окажется не одна строка, подходящая под условия запроса, мы останемся в блаженном неведении...
 
 Top
Мелкий Супермодератор
Отправлено: 16 Марта, 2015 - 15:05:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Sail пишет:
в таблице окажется не одна строка, подходящая под условия запроса, мы останемся в блаженном неведении...

Так в любом случае не узнаем. Когда ждём заведомо только одну строку, то и итератор не пишется, делается stmt->fetch(), проверяется на false и всё.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB