172 похожих чатов

Вопрос по ms sql может кто знает точно, там есть

фиксированный порядок, слева направо или с право налево, или это по разному может быть:

where fun1(поле1) = 1 and fun2(поле2) = 1 and fun3(поле1) = 1

в итоге сперва выполнится функция 1, если она ок, выполнится функция 2, если вторая ОК то пойдет функция 3 и если та ОК, то строка попадает в выборку

или иначе?

3 ответов

21 просмотр

Если по стандарту, порядок вычисления предикатов не определён, т.е., СУБД решает, какое из условий селективнее. Попробуйте обернуть в подзапрос и тяжелые функции снаружи вызвать (хотя это не гарантия, но формально означает, что снаружи функции должны вызываться по строкам, отобранным подзапросом). Кстати в PostgreSQL СУБД обязана будет вызвать функции, если они определены как volatile, независимо от порядка предикатов.

> там есть фиксированный порядок Не гарантируется, как и в любой реализации SQL. IMNSHO, кто этого не знает — не знает SQL даже на "среднем" уровне (потому что иногда будет писать запросы, которые "падают" от любого изменения данных, или при изменении версии СУБД (даже minor или как там эти версии называются в данной СУБД), или даже от изменения настроек). И конкретно в MS SQL фиксированного порядка точно нет, да. > и когда привык к постгресу ms sql начинает разрдражать очень сильно То, что PostgreSQL реже ведёт себя таким образом — это скорее его дефект, понимаете? ;)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта