|
Модераторы: skyboy |
|
polin11 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 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, возможно я чего-то не понимаю? |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Формально эти запросы недетерминированы, потому что при наличии ограничения по количеству возвращаемых записей отсутствует ORDER BY. Предполагаю, что они вернут разные наборы - второй скорее всего будет возвращать записи в порядке их следования в использованном для выполнения запроса индексе либо первичном/кластерном, если индекс не будет использоваться, а первый вернёт скорее всего записи в порядке их физического следования в теле хранения таблицы. Впрочем, это всё вилами по воде... Если СУБД умеет вычисляемые поля и их индексирование - вот не факт... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |