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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.08.2006, 12:12   #1  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
работали под 3.7 на SQL2000 - норм
на новый сервер поставлили SQL2005
развернули базу, решили все проблемы с сессиями, правами и т.п.
пробуем учитывать документ - думает около часа
SQL монитор говорит, что при учете в 22 CU команда find('+') вызывает
запрос select * from Item Ledger entry
которая выполняется непонятно почему 40-50 минут
затем то же с Value Entry
пробовали на 4.0, оптимизация ключей не помогает
в чем проблема ???
Старый 02.08.2006, 08:58   #2  
Arshak is offline
Arshak
Участник
 
190 / 10 (1) +
Регистрация: 01.10.2004
в 4-0 sp-1-2 основная оптимизация под SQl заключалась в замене
find('+') на Findlast b find('-') на Findfist. в 3-70 , на сколько я помню их нет, но вероятно если перейти на оболочку 4-0 то и в коде 3-70 можно использовать эти функции.
Старый 02.08.2006, 11:10   #3  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Переходите на 4-ку СП2.
Старый 02.08.2006, 13:39   #4  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
локализовали проблему:
при фильтрации по 1-му из полей Code10
(есть вторичный ключ)
Sql надолго уходит в себя...
rIle.setcurrentkey(field1);
rILE.setrange(field1,'ЦО');
примечательно что при фильтрации по другому абсолютно аналогичному полю все в порядке
ключ оптимизировали,убивали создавали т.п.
Старый 02.08.2006, 13:57   #5  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
оболочка 4sp2
база 3.60
Старый 02.08.2006, 18:42   #6  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
ситация проясняется
для Navision setcurrenkey не прямое указание на использование данного ключа при SQL-запросе, а не более чем
"order by" то есть sql по своему усмотрению выбирает нужную ключ
при построении плана запроса, где более важную роль играют поля по котрым накладывается фильтр. в результате при наличии вторичных ключей по аналогичным полям, setrange по 1 полю выполняется с использованием его индекса (Sql так решил), а в другом с использованием первичного кластерного ключа из-за чего
такая разница в обработке.
FindLas и find('-') на время существенно не повлияли
Старый 04.08.2006, 10:11   #7  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
лечится
в 4 ссделали кластерный ключ не первичный Entry_No а
вторичный Field1,Entry_No
в результате sql стал использоваеть его при выше указанном запросе
и всё стало на свои места....
Старый 04.08.2006, 10:23   #8  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
setcurrenkey убрать нельзя? в такой конструкции
Цитата:
rIle.setcurrentkey(field1);
rILE.setrange(field1,'ЦО');
в SQL версии эта команда бесполезна, если не вредна.

ну и не то чтобы совсем уж плохо, но менять кластерность на первичных ключах у книг нехорошо. ИМХО... Уж лучше пусть никакой ключ не будет кластерным чем такой...
 


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

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

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