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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2008, 03:52   #1  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Регистрация: 21.12.2005
Есть глобальная переменная T1 типа record - MyTable.

Предположим хочу я найти в таблице MyTable запись.
Вопрос: есть с точки зрения производительности разница в двух следующих вариантах?

Вариант 1:
[codebox]T1.SETRRANGE(..)
T1.SETCURRENTKEY(..)
T1.FIND('-')[/codebox]

Вариант 2:
[codebox]
T1.SETCURRENTKEY(..)
T1.SETRRANGE(..)
T1.FIND('-')[/codebox]

Итак, есть ли разница в каком проядке вызывать SETRANGE и SETCURRENTKEY?

Спасибо
Старый 23.11.2008, 17:44   #2  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
В sql версии нет, т.к движок Nav транслирует код в SQL запрос именно на сроке Find('-') включая фильтры setrange как 'where ...' и ключ setcurrentkey как 'order by ...'
Старый 24.11.2008, 09:54   #3  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от birdy Посмотреть сообщение
Есть глобальная переменная T1 типа record - MyTable.

Предположим хочу я найти в таблице MyTable запись.
Вопрос: есть с точки зрения производительности разница в двух следующих вариантах?

Вариант 1:
[codebox]T1.SETRRANGE(..)
T1.SETCURRENTKEY(..)
T1.FIND('-')[/codebox]

Вариант 2:
[codebox]
T1.SETCURRENTKEY(..)
T1.SETRRANGE(..)
T1.FIND('-')[/codebox]

Итак, есть ли разница в каком проядке вызывать SETRANGE и SETCURRENTKEY?

Спасибо
Самый быстрый способ это проверить - поставить счетчики времени и сравнить
Старый 24.11.2008, 10:41   #4  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Регистрация: 21.12.2005
2dmites

Тоже так думаю.

2Forewind

Мне интересно, встречал ли кто-нибудь, именно в теории, прямые указания на тот или иной порядок вызова этих функции
Старый 24.11.2008, 11:19   #5  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от birdy Посмотреть сообщение
2dmites

Тоже так думаю.

2Forewind

Мне интересно, встречал ли кто-нибудь, именно в теории, прямые указания на тот или иной порядок вызова этих функции
В теории прямого указания лично я не помню, но в примерах раньше всегда и везде шел сначала SETCURRENTKEY, а вот уже в хелпе по FINDSET идет наоборот...
Старый 24.11.2008, 11:57   #6  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Я убежден, что если различия и есть то только в том, как NAV работает со своими внутренними структурами, и они незначительны.
Старый 24.11.2008, 15:40   #7  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
!
Цитата:
Сообщение от birdy Посмотреть сообщение
Есть глобальная переменная T1 типа record - MyTable.

Предположим хочу я найти в таблице MyTable запись.
Вопрос: есть с точки зрения производительности разница в двух следующих вариантах?

Вариант 1:
[codebox]T1.SETRRANGE(..)
T1.SETCURRENTKEY(..)
T1.FIND('-')[/codebox]

Вариант 2:
[codebox]
T1.SETCURRENTKEY(..)
T1.SETRRANGE(..)
T1.FIND('-')[/codebox]

Итак, есть ли разница в каком проядке вызывать SETRANGE и SETCURRENTKEY?
Принимая во внимание то, что написано в разделе "Sorting and Filtering Records" в разделе Development I и то, чо у нас интерпретатор, то можно сделать вывод, что выборка из отсортированного массива данных будет быстрее.
Старый 24.11.2008, 23:31   #8  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Регистрация: 21.12.2005
2RedFox
Загадочный ответ. Может быть правильный, но загадочный - не понял.

Массив (в данном случае таблица) в обоих случая отсортирован. Выборка в обоих случаях ведется по отсортированному массиву.
Старый 25.11.2008, 11:10   #9  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от birdy Посмотреть сообщение
2RedFox
Загадочный ответ. Может быть правильный, но загадочный - не понял.
Ничего загадочного тут нет. Вспомните как устроена БД Натив? А потом, принимая во внимание, что мы имеет "интерпретатор", то когда мы пытаемся наложить фильтр по "неправильному" ключу, то перебор получается не по дереву. А вот если сразу задать ключик (тоесть новую "версию" таблицы), то мы получим очень быстрый вариант поиска.
Цитата:
Массив (в данном случае таблица) в обоих случая отсортирован. Выборка в обоих случаях ведется по отсортированному массиву.
Да, но в одном случае мы фильтруем по полю, кходящему в ключ. А в другом - "условно-хаотически"!
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:35.