AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2005, 11:03   #21  
Shoorik is offline
Shoorik
Участник
 
19 / 10 (1) +
Регистрация: 03.03.2005
Попробовал...
На форму положил три кнопки, на триггер OnPush каждой кнопки считается количество записей в таблице с фильтром по одному и тому же вычисляемому полю. Первая кнопка - COUNT, вторая - COUNTAPPROX, третья - REPEAT..UNTIL.
Дальше начинаем нажимать на кнопки в разном порядке и записывать результаты :-)
Среднее время подсчёта снижается за счёт кэширования, но REPEAT..UNTIL всё равно работает немного быстрее.

Да, забыл уточнить: используется Navision database server.
Старый 04.03.2005, 13:38   #22  
Scorpie is offline
Scorpie
Участник
 
239 / 10 (1) +
Регистрация: 25.10.2004
Адрес: Moskow
Цитата:
Сообщение от tyrex
Можно вставить два слова?

В случае если таблица Table содержит flow fields типа Sum, а также имеет немаленький размер (допустим >10 000 записей), то количество элементов в этой таблице быстрее посчитать не через Table.COUNT или Table.COUNTAPPROX, а через перебор всех элементов с суммированием переменной-счетчика.

Баг навиженовского движка.
Прошу прощения, но с чего вдруг?!
COUNT посылает на SQL сервер команду:
SELECT SUM(rows), SUM(reserved) FROM "Database".[dbo].[sysindexes] WHERE id = OBJECT_ID(@P1) AND (indid < 2 OR indid = 255)', N'@P1 nvarchar(30)', N'"Company Name$Table Name"'

Это конечно в общем случае... И будь в той таблице хоть все кроме первичного ключа поля flowfieldами никакой разницы в скорости выполнения данной команды не будет.

Другое дело если у вас есть некий flowfield в справочнике - например Net Change в клиентах. И накладывается фильтр "Net Change">2000.... Но это уже совсем другая история...
Старый 04.03.2005, 16:16   #23  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
нда..
как показывает этот пример - не только нету бага, но и дополнительная оптимизация применена в случае отсутствия фильтров на таблице, по которой count снимается.
Shoorik, проверил и Ваш метод, только собрал результаты 1000 циклов во временной таблице и построил диаграмму различий времени подсчета этими двумя методами. Стоит ли удивляться тому что получил банального Гаусса.

Короче, нету там никакого бага. Работает Count отлично. В том числе с фильтрами по вычисляемым полям.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:05.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.