Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / как можно повысить приоритет одного условия в предложении Where / 5 сообщений из 5, страница 1 из 1
22.07.2013, 16:08
    #38339295
faid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как можно повысить приоритет одного условия в предложении Where
Подскажите как можно повысить приоритет условия для select в предложении Where, пример код из процедуры:

let fvar1 = 0;

Select *
Into *
From tab1 t
Where t.col1 = 1 And t.col2 = function1(p1, p2) And t.col2 = function2(p3, p4)

Union

Select *
....
Union

Select *
....

тут условие t.col1 = 1 легкое, хочется что б оно выполнялось первым, остальные тяжелые.
Может просто его в скобки взять. подскажите пожалуйста
...
Рейтинг: 0 / 0
22.07.2013, 17:54
    #38339507
faid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как можно повысить приоритет одного условия в предложении Where
допустил ошибку в предыдущем (она на суть не влияет), тут исправился.
Подскажите как можно повысить приоритет условия для select в предложении Where, пример код из процедуры:

let fvar1 = function3(p1,p2, ... );

Select *
Into *
From tab1 t
Where fvar1 = 1 And t.col2 = function1(p1, p2) And t.col2 = function2(p3, p4)

Union

Select *
....
Union

Select *
....

тут условие fvar1 = 1 легкое, хочется что б оно выполнялось первым, остальные тяжелые, т.е. хочется как то явно оптимизатору подсказать что бы легкое условие проверялось первым.
Может просто его в скобки взять?. подскажите пожалуйста
...
Рейтинг: 0 / 0
22.07.2013, 20:54
    #38339705
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как можно повысить приоритет одного условия в предложении Where
1. Вы уверены, что оптимизатор сам не берет первым t.col1 = 1? План запроса (set explain on) смотрели?
2. Если план запроса показал, что оптимизатор работает неоптимально, то вполне возможно, что для вправления ему мозгов достаточно дать update statistics (потом опять проверить план запроса).
3. Если оптимизатор опять лажает (что маловероятно), то можно воспользоваться хинтами, явно указав оптимизатору то, как надо делать. Какие хинты надо использовать по предоставленной информации не определить. Кроме того, использование хинтов может отрицательно сказаться при разрастании БД или модификации таблицы.
4. Вы привели очень мало информации для оптимизации запроса. Следует указать точную структуру таблицы (особенно важны индексы), особенности фрагментации, приблизительное число записей и записей с t.col1 = 1, версию информикса и ОС и т.д.
...
Рейтинг: 0 / 0
23.07.2013, 00:30
    #38339818
faid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как можно повысить приоритет одного условия в предложении Where
буду смотреть, спасибо
...
Рейтинг: 0 / 0
24.07.2013, 02:23
    #38341527
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как можно повысить приоритет одного условия в предложении Where
faidПодскажите как можно повысить приоритет условия для select в предложении Where, пример код из процедуры:

let fvar1 = 0;

Select *
Into *
From tab1 t
Where t.col1 = 1 And t.col2 = function1(p1, p2) And t.col2 = function2(p3, p4)

Union

Select *
....
Union

Select *
....

тут условие t.col1 = 1 легкое, хочется что б оно выполнялось первым, остальные тяжелые.
Может просто его в скобки взять. подскажите пожалуйста

Вы настолько не-sql-но мыслите, что единственным полезным советом будет совет почитать что-то типа "SQL for dummies".
Там вам расскажут, что в SQL а) нет приоритетов б) и порядка выполнения операций тоже нет и в) "легкость" фильтра никакого отношения к его ценности не имеет - если у вас все записи в таблице имеют col1 равным 1, то это условие совершенно бесполезно, и будет лучше, если оптимизатор его проигорирует.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / как можно повысить приоритет одного условия в предложении Where / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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