powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow: Filter or Retrieve?
12 сообщений из 12, страница 1 из 1
DataWindow: Filter or Retrieve?
    #36096174
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataWindow заполнет. Пользователь может устанавливать разные фильтры.
1. На каком этапе фильтр целесообразней заменить на новый Retrieve?
2. Есть ли ограничения на длину строки условия для фильтра?
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36096307
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISDataWindow заполнет. Пользователь может устанавливать разные фильтры.
1. На каком этапе фильтр целесообразней заменить на новый Retrieve?
2. Есть ли ограничения на длину строки условия для фильтра?
1. Если записей в DataWindow не сотни тысяч, то целесообразности менять фильтр на Retrieve в общем случае нет.
2. Есть, большое.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36096571
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркAISDataWindow заполнет. Пользователь может устанавливать разные фильтры.
1. На каком этапе фильтр целесообразней заменить на новый Retrieve?
2. Есть ли ограничения на длину строки условия для фильтра?
1. Если записей в DataWindow не сотни тысяч, то целесообразности менять фильтр на Retrieve в общем случае нет.
2. Есть, большое.
Т.е. в конструкции:
Код: plaintext
"(#" + ls_num_col + " IN (" + a_str + "))"
параметр a_str может быть "большой" (например, массив ввиде строки из 1000 значений)?
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36096738
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISЛокшин МаркAISDataWindow заполнет. Пользователь может устанавливать разные фильтры.
1. На каком этапе фильтр целесообразней заменить на новый Retrieve?
2. Есть ли ограничения на длину строки условия для фильтра?
1. Если записей в DataWindow не сотни тысяч, то целесообразности менять фильтр на Retrieve в общем случае нет.
2. Есть, большое.
Т.е. в конструкции:
Код: plaintext
"(#" + ls_num_col + " IN (" + a_str + "))"
параметр a_str может быть "большой" (например, массив ввиде строки из 1000 значений)?
А Вам что-то мешает это проверить? Как это будет по скорости - не знаю. Например подобная конструкция на MS SQL (на 2000 и ниже - точно) когда в in массив из нескольких тысяч значений, приводит к достаточно сильным тормозам.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36097155
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк ,
Спасибо за ответ. Буду скорее всего искать другие решения (конструкции строки фильтра), либо ограничивать пользователя в его экспериментах.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36101382
И то и другое я давно включил в свои приложения в качестве стандартного сервиса любого dw
(местами ограничено по логическим соображениям)

Те пользователь может конструировать любое условие из колонок окна + дописывать
свой фрагмент where условия для sql или фильтра dw - что ему больше нравиться.

Результат по моим наблюдениям получился лучше для where в sql -
С фильтрами есть непонятные глюки - ну может я не все там доработал...

Что касается длины where условий - я их ограничил 8к - с диагностикой типа "Слишком сложно...", поскольку с SQL ANYWHERE старых версий (5.5 - 7) были преценденты жесткого падения сервера, когда user маркировал этак 30 000 записей справочника номенклатуры и
накладывал это условие на какой-нибудь товарный отчет.

По поводу эффективности списковых условий IN (1,2,3 ...) применительно к той же ASA
"несколько" по ключу оч хорошо
"много" даже по ключу оч хреново когда все одно full scan получается

поэтому почти везде заменил список на строку через запятую и locate(...)>0 в ней
Ничего лучше для передачи списковых аргуметов в отчеты и процедуры не нашел - это
самое быстрое оказалось - лучше IN, LIKE ...
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36101968
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, когда предполагается возможность выбора юзером нескольких значений для фильтра, вместо
Код: plaintext
where col in ( 1 ,  2 ,  3 )
записываю эти 1, 2, 3 в глобальную временную таблицу, каждое значение в отдельную запись, с указанием типа значения (обычно это имя таблицы-справочника откуда взято значение).
и делаю условие так:
Код: plaintext
where exists (select null from temp where value = col and name = 'coltype')
Этот кореллированный подзапрос хорошо оптимизируется большинством СУБД.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36102205
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЯ, когда предполагается возможность выбора юзером нескольких значений для фильтра, вместо
Код: plaintext
where col in ( 1 ,  2 ,  3 )
записываю эти 1, 2, 3 в глобальную временную таблицу, каждое значение в отдельную запись, с указанием типа значения (обычно это имя таблицы-справочника откуда взято значение).
и делаю условие так:
Код: plaintext
where exists (select null from temp where value = col and name = 'coltype')
Этот кореллированный подзапрос хорошо оптимизируется большинством СУБД.
Делаю примерно также, только почему в глобальную временную таблицу? Не помню как в Oracle, а в MS SQL она например видна всем сессиям.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36102548
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркДелаю примерно также, только почему в глобальную временную таблицу? Не помню как в Oracle, а в MS SQL она например видна всем сессиям.
В Оракле - тоже.
Но данные-то у каждой сессии там свои.
Эта таблица у меня создается один раз вместе со всей остальной схемой, и приложению не надо каждый раз заботиться об этом, и появляется возможность оптимизации на уровне СУБД без изменения кода программы (индексы и прочее). Плюс в PB они видны как обычные таблицы и можно использовать в полной мере все инструменты (DW painter, Embedded SQL).

Ну и в Oracle нету других типов временных таблиц :)

Но например в ASA (с которым я тоже работаю) есть локальные, но я по вышеописанным причинам их не использую.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36102852
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНо данные-то у каждой сессии там свои.

А в MS SQL общие.
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36103028
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркAnatoly MoskovskyНо данные-то у каждой сессии там свои.

А в MS SQL общие.
А есть хотя-бы опция ON COMMIT DELETE ROWS ?
...
Рейтинг: 0 / 0
DataWindow: Filter or Retrieve?
    #36104762
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЛокшин МаркAnatoly MoskovskyНо данные-то у каждой сессии там свои.

А в MS SQL общие.
А есть хотя-бы опция ON COMMIT DELETE ROWS ?
Нет. Хотите персональные данные для каждой сессии - используйте только локальные временные таблицы.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow: Filter or Retrieve?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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