|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Задача: есть 'Таблица1' и на её основе 'Форма1' для редактирования данных. В 'Форма1' поисковое поле со списком 'ПоисковыйКомбоБокс', содержимое выпадающего списка ограничиваются значениями полей 'F2_Фильтр', 'F3_Фильтр'. Система работает, но есть ньюанс). Таблица1 находится на Ms SQL Server. Цель максимально ограничить трафик, для повышения быстродействия системы. Для пояснения в примере преведены запросы: Запрос_Топ100_серв даёт трафик 114кбайт, Запрос_МаксЧислоЗаписей100_серв даёт трафик 30кбайт, ну и запрос без ограничений 'Запрос_серв' - куча мегабайт. Правда локальный Запрос_МаксЧислоЗаписей100 (не ограничивает количество строк) работает не так как Запрос_МаксЧислоЗаписей100_серв. Получается что SELECT TOP 100 Таблица1.... скачивает не 100 записей а на много больше, а надо именно 100. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 16:49 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Geizer1, На мой взгляд было бы намного правильней добавить еще одну-две таблицы: категория (заготовки,инструмент абразивный....):подкатегория (в зависимости от выбранной категории:стержень,брусок...):материалРазмер(d 6х100мм Р6АМ5 HRC 64-66 "CNIC", d 6х150мм Р6АМ5 HRC 64-66 "CNIC")как-то так. На форме разместить 3 зависимых поля и проводить отбор по ним. На форме отразится необходимый и достаточный минимум записей(а сколько их будет, в зависимости от выбранной категории и подкатегории, не суть важно). У Вас таблица создана с грубым нарушением правил "базостроения" и вся дальнейшая работа с данными,хранимыми в ней,ооочень усложняется ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 19:30 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
sdkuGeizer1, На форме разместить 3 зависимых поля и проводить отбор по ним. На форме отразится необходимый и достаточный минимум записей(а сколько их будет, в зависимости от выбранной категории и подкатегории, не суть важно). Таблица в примере была скачана с инета - это просто прайс лист торговой компании. Мне не хотелось выкладывать реальные данные, а наполнить пример чем то надо было, что бы был объем данных и трафик. В реальной таблице 4 текстовых поля (1-3 слова в каждом) повторяемости почти нет и по каждому возможен выбор-отсев данных. По результату операции мне вполне подошел бы оператор Top в инструкции Select, но трафик при его применении гораздо больше чем ожидается, если не вводить ограничения в фильтрующие поля. Вы предлагаете сразу заставить пользователя сделать максимально точный выбор, тем самым и сократить количество возвращаемых записей. И это придётся сделать, если мы тут не найдём ещё какой то вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 15:26 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Geizer1...Таблица в примере была скачана с инета - это просто прайс лист торговой компании.... тогда и говорить надо о прайсе торговой компании-а если о Вашей проблеме ,то и данные нужны Ваши (чтоб увидеть реальную организацию данных-в прайсе она никакая) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 16:48 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Убрал я оператор TOP совсем. Сделал именованный запрос аналогичный выпадающему списку. Повесил ограничение на количество строк по событию 'Вход' выпадающего списка. В этом событии из именованного запроса функцией Dcount считаю количество строк (1-2 кбайт трафик). Если строк больше лимита, то фокус на поля задающие ограничения. Получилось вполне экономичное решение. Здесь на форуме вспоминали свойство ListCount, так вот оно приводит к трафику равному содержимому выпадающего списка. Моё решение меня устраивает, можно топик закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2019, 06:32 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Geizer1.... Цель максимально ограничить трафик, для повышения быстродействия системы.Geizer1.....считаю количество строк (1-2 кбайт трафик). Если строк больше лимита, то фокус на поля задающие ограничения. При вычислительной мощи современного(даже самого дешманского)компьютера говорить даже о нескольких десятках КВ,как минимум, смешно-а уж если с 2 КВ работает медленно,то дело явно не в объеме ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 00:34 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
sdku При вычислительной мощи современного(даже самого дешманского)компьютера говорить даже о нескольких десятках КВ,как минимум, смешно-а уж если с 2 КВ работает медленно,то дело явно не в объеме Предвидя подобные реплики я и выкладывал в примере таблицу в которой много буковок.) Если не ограничивать трафик то речь идёт о сотнях кбайт, а если пользователь начнёт колёсико крутить и просматривать выпадающий список то и Мбайты появятся. По моему лучше пусть сервер у себя в памяти поищет и выдаст результат, чем он всё это будет передавать по сетке. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 05:15 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
1-2 кбайт трафик это сама функция Dcount. Весь объем выборки это свойство ListCount. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 07:17 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
Geizer1, не могу я "вкурить" следующее:ограничили Вы список,а пользователю нужно наименование которое,в силу ограничения, не попало в список-его там нет,но в таблице оно присутствует-как юзеру его выбрать? непонятно,однако. только максимальная структуризация данных-других вариантов,лично я,не вижу: Geizer1...Вы предлагаете сразу заставить пользователя сделать максимально точный выбор, тем самым и сократить количество возвращаемых записей. И это придётся сделать, если мы тут не найдём ещё какой то вариант. Не найдем! максимальное,в пределах разумного, структурирование данных спасет "отца русской демократии"-(12 стульев) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 12:09 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
вдогонку: а ListCount возвращает только число элементов списка-цифру ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2019, 12:20 |
|
Ограничить количество записей в ComboBox, для уменьшения трафика с SQL Server
|
|||
---|---|---|---|
#18+
sdkuGeizer1, не могу я "вкурить" следующее:ограничили Вы список,а пользователю нужно наименование которое,в силу ограничения, не попало в список-его там нет,но в таблице оно присутствует-как юзеру его выбрать? непонятно,однако. только максимальная структуризация данных-других вариантов,лично я,не вижу: Geizer1...Вы предлагаете сразу заставить пользователя сделать максимально точный выбор, тем самым и сократить количество возвращаемых записей. И это придётся сделать, если мы тут не найдём ещё какой то вариант. Не найдем! максимальное,в пределах разумного, структурирование данных спасет "отца русской демократии"-(12 стульев) Я же писал выше что оператор Top я убрал совсем (он не эффективен, строки ограничивает а трафик нет), других способов ограничить число строк в выпадающем списке тут не прозвучало. Я просто определяю количество строк до того как выпадающий список может быть открыт, и вывожу сообщение пользователю если лимит превышен. Вводя в фильтрующие поля символы пользователь ограничит количество строк и получит результат. В каком то смысле это тоже самое что и вы предлагаете. sdkuвдогонку: а ListCount возвращает только число элементов списка-цифру Я не совсем корректно написал 2-е предложение. Конечно ListCount возвращает число, но для этого Access тянет через сеть весь объем выпадающего списка. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2019, 14:52 |
|
|
start [/forum/topic.php?fid=45&fpage=30&tid=1610607]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 259ms |
0 / 0 |