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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2008, 08:17   #1  
Nataly_imported is offline
Nataly_imported
Участник
 
13 / 10 (1) +
Регистрация: 27.07.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Просто уточнение - версия БД какая?
Вообще пишу под 4.0 SP3, но возможно код будет использовано и под другими версиями (как ниже, так и выше). БД под SQL Server.

Цитата:
Сообщение от AlexB
1. CASE, мо-моему, не только читабельнее, но и чуть-чуть быстрее чем IF..ELSE..IF
2. SETRANGE, по-моему, тоже быстрее чем SETFILTER, поэтому конкретно в этом случае можно обе даты фильтровать не
с SETFILTER
По поводу SETFILTER и SETFILTER действительно просмотрела... а что CASE быстрее работает не знала. Спасибо!

Относительно FINDFIRST, FINDLAST и т.д. Не хотелось их использовать, чтобы безболезненно код переносить под другие версии.

А вообще, разве все это имеет значение для темп-таблиц? Для реальных-то понятно, что быстрее, там запрос на сервер отправляется, а тут же локально все.

Цитата:
Сообщение от anatol33
приведу выдержку хелпа по FINDFIRST
Comment
This function should be used instead of FIND('-') when you only need the first record.
You should only use this function when you explicitly want to find the first record in a table/set. Do not use this function in combination with REPEAT .. UNTIL.
Спасибо за уточнение.


Кстати, я основательно затестила, использование наиболее подходящих ключей очень помогло, скорость существенно улучшилась, спасибо!
Старый 17.10.2008, 11:05   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Nataly Посмотреть сообщение
Вообще пишу под 4.0 SP3, но возможно код будет использовано и под другими версиями (как ниже, так и выше). БД под SQL Server.
Если Вы не используете хинтов, то для SQL 2005 всё равно какой ключик. Если план есть, то он будет использовать его, иначе полный скан по БД.

P.S. Кстати, можете глянуть в Clent Monitor что твориться под SQL
Старый 20.10.2008, 08:48   #3  
Nataly_imported is offline
Nataly_imported
Участник
 
13 / 10 (1) +
Регистрация: 27.07.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Если Вы не используете хинтов, то для SQL 2005 всё равно какой ключик. Если план есть, то он будет использовать его, иначе полный скан по БД.

P.S. Кстати, можете глянуть в Clent Monitor что твориться под SQL
А вы точно про темп-таблицы пишите?
По крайней мере Clent Monitor видит только запросы к базе, работу с темп-таблицами он не отражает.
Старый 06.11.2008, 16:25   #4  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Nataly Посмотреть сообщение
А вы точно про темп-таблицы пишите?
По крайней мере Clent Monitor видит только запросы к базе, работу с темп-таблицами он не отражает.
"Работает такая процедура примерно 0,036 секунды. " - Это с с заполнением этой временной таблицы в памяти или ТОЛЬКО сравнение?
Далее все эти таблицы хранятся в памяти и если её не достаточно, то будет происходить сброс на винт и восстановление.
А так как куча фильтров ставится, то я не уверен, что всё хранится в памяти!
Старый 06.11.2008, 17:39   #5  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
"Работает такая процедура примерно 0,036 секунды. " - Это с с заполнением этой временной таблицы в памяти или ТОЛЬКО сравнение?
Далее все эти таблицы хранятся в памяти и если её не достаточно, то будет происходить сброс на винт и восстановление.
А так как куча фильтров ставится, то я не уверен, что всё хранится в памяти!
Ну в крайнем случае сбросит в своп файл Винды, что то я не слышал чтобы монитор клиента отражал запросы к своп файлу .
По теме: Есть видимо некий порог, когда производительнее использовать возможности SQL сервера,
нежели работать с черным ящиком, именуемым временные таблицы. Предполагаю используется тот же самый
механизм что и для работы с native DB.
Старый 07.11.2008, 13:14   #6  
Nataly_imported is offline
Nataly_imported
Участник
 
13 / 10 (1) +
Регистрация: 27.07.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
"Работает такая процедура примерно 0,036 секунды. " - Это с с заполнением этой временной таблицы в памяти или ТОЛЬКО сравнение?
0,036 секунды - выполняется ровно то, что написано в приведенном коде, т.е. заполнение таблиц происходит до начала выполнения процедуры.

А вы хотите сказать, что торможение вызвано работой с винтиком, да? Это по крайней мере понятно будет.

Цитата:
Сообщение от rmv
По теме: Есть видимо некий порог, когда производительнее использовать возможности SQL сервера,
нежели работать с черным ящиком, именуемым временные таблицы. Предполагаю используется тот же самый
механизм что и для работы с native DB.
С реальными таблицами здесь очень не удобно будет работать (как минимум придется новые объекты под это занимать + обработка многопользовательской работы + сразу возникнет проблема блокировок), да и вряд ли быстрее, чем с темповскими.
 

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

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

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

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

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