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

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

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

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

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

или иначе?

3 ответов

9 просмотров

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

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

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

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

type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
45
А чем вам питонисты не угодили?😂
.
79
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
А дин типизация это хорошо или плохо?
Alexey
12
Исходники плюс документация? Вы гоните)) демок хватит всем
zamtmn
11
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
76
а что есть "статистика" ? просто подсчет фактов обращения и времен выполнения ?
Сергей
9
Карта сайта