Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два идентичных запроса SQL 
:(
    Опции темы
polin11
Дата 22.4.2018, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Два идентичных запроса SQL
СУБД POSTGESQL. Анализирую чужой код. Есть таблица Коды, в ней столбец Ключ типа text и столбец Запись типа boolean, 
есть 2 запроса:
1) SELECT * FROM "Коды" WHERE "Запись" = true AND ( "Ключ"  LIKE  'авто%'  )::integer = 1 limit 100
2) SELECT * FROM "Коды" WHERE "Запись" = true AND "Ключ"  LIKE  'авто%'  limit 100
по мне они идентичны, только 1 выполняется в несколько раз дольше. 
Внимание вопрос, для чего выполнять лишнюю (с моей точки зрения операцию), приведение к целому и сравнение с 1 
( "Ключ"  LIKE  'авто%'  )::integer = 1, возможно я чего-то не понимаю?
PM MAIL   Вверх
Akina
Дата 23.4.2018, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Цитата(polin11 @  22.4.2018,  15:59 Найти цитируемый пост)
для чего выполнять лишнюю (с моей точки зрения операцию), приведение к целому и сравнение с 1

Формально эти запросы недетерминированы, потому что при наличии ограничения по количеству возвращаемых записей отсутствует ORDER BY.
Предполагаю, что они вернут разные наборы - второй скорее всего будет возвращать записи в порядке их следования в использованном для выполнения запроса индексе либо первичном/кластерном, если индекс не будет использоваться, а первый вернёт скорее всего записи в порядке их физического следования в теле хранения таблицы. Впрочем, это всё вилами по воде...

Цитата(polin11 @  22.4.2018,  15:59 Найти цитируемый пост)
 только 1 выполняется в несколько раз дольше. 

Если СУБД умеет вычисляемые поля и их индексирование - вот не факт...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.