Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения? / 8 сообщений из 8, страница 1 из 1
13.09.2004, 16:00
    #32692188
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
Уточняю. Есть запрос
Код: plaintext
1.
2.
3.
4.
SELECT *
FROM table1
WHERE
  field1 =  1   --(1) 
  AND field2 =  2  --( 2 )
- это упрощённый запрос. Условия, конечно же, могут быть и посложнее - EXISTS, вложеные условия.

Если условие (1) не выполнилось, то будет ли проверятся условие (2)?
В какой последовательности происходят эти проверки?
Где это посмотреть?
Можно ли повлиять на порядок проверок?
...
Рейтинг: 0 / 0
13.09.2004, 17:13
    #32692407
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
у тебя тут нет условия 1 и 2
это одно условие, - AND (логическое И из двух простых).


2 и более условий - это конструкция CASE WHEN (кааца в этом диалекте)
...
Рейтинг: 0 / 0
13.09.2004, 17:20
    #32692434
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
мои извинения.

- прочитал внимательнее.
Вопрос в порядке вычисления логических выражений, если я правильно понял. Совершается ли оптимизация внутри вычисления.

т.е. возвращает ли (А) AND (B) False, если хотя бы одно False?
не думаю. (B) может быть NULL, тогда False AND NULL должны дать NULL.

Но в условии WHERE и FALSE и NULL не выводятся в результат, т.ч. специяльно для WHERE такой ёптимизацией могабыть занимались.

Будем ждать гуру.
...
Рейтинг: 0 / 0
14.09.2004, 03:53
    #32692876
PJD
PJD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
Занимается ли сервер оптимизацией условий можно легко проверить - создать функцию пишущую сообщение (raise) при каждом своем вызове и заменить константы 1 и 2 на вызов этой ф-ии.
Как я понимаю, смысл этот вопрос имеет только если в условии есть вызов функции с побочным эффектом (запись в таблицу например). Но поскольку (IMHO) стандарты SQL не определяют, в каком порядке сервер БД должен выполнять проверку условий во where - в любой момент разработчики могут свободно поменять порядок. Или сам сервер поменяет по каким-то своим соображениям. Так что (опять ИМХО) лучше никаких функций с побочным эффектом в таком неопределенном месте не вызывать.
...
Рейтинг: 0 / 0
14.09.2004, 12:36
    #32693478
nevermind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
Я не гуру, но ответ лежит вот здесь: http://www.postgresql.org/docs/7.4/static/sql-expressions.html#SYNTAX-EXPRESS-EVAL

(если ссылка не сработала, как у меня, это будет последний раздел на странице). Общий смысл там такой что порядок разборки не определен и может быть любым.
...
Рейтинг: 0 / 0
14.09.2004, 16:42
    #32694188
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
[quot nevermind]Я не гуру, но ответ лежит вот здесь: http://www.postgresql.org/docs/7.4/static/sql-expressions.html#SYNTAX-EXPRESS-EVAL
[quot]
Хорошая ссылка. Ответ на большинство вопросов, особенно на то, как задать порядок проверок. Сенкс.
...
Рейтинг: 0 / 0
15.09.2004, 11:18
    #32695212
nevermind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
Велкам!!! :)
...
Рейтинг: 0 / 0
15.09.2004, 12:58
    #32695521
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения?
nevermindВелкам!!! :)
Обычно говорят "Фор ёр плеже"
)))
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ещё один теоретический вопрос: в условии с несколькими выражениями Постгрес делает полную проверку всех или до первого несовпадения? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]