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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.02.2008, 14:50   #1  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Цитата:
Сообщение от rov Посмотреть сообщение
Скажем, Товар Книга Операций?
Например. Или Фин. Книга, или Стоимость Операции - в общем, где со временем количество записей начинает измеряться миллионами.
Цитата:
Например фильтр на поле Документ Но? Фильтр естественно по нескольким значениям?
Да, важно, что именно по нескольким
Цитата:
Вот тут не очень понял. Что значит "пройтись в порядке первичного ключа"?
То есть перемещаться между отфильтрованными записямии при этом они отсортированы по порядку первичного ключа? А ключ вы выбираете или нет? То есть фильтр по полю наложили - это поле в составе ключа или нет?
Если - нет, то понятно, что будет медленно - так это и везде так будет-в любой базе.
А если поле есть в ключе- так и работать будет быстро.
Или я что-то недопонял?
Я имел в виду следующую проблему: если вы делаете вторичный ключ, включающий в себя поле, по которому хотите фильтровать, то, используя его, нельзя упорядочить таблицу по первичному ключу. Нельзя сделать вторичный ключ, который начинается с поля "Entry No.".
Пока писал, придумал изврат: добавить новое поле в таблицу и вначале ключа поставить новое поле, которое никогда не будет заполняться, а потом уже "Entry No."... Гы, а ведь хоть какое-то решение
Старый 08.02.2008, 16:44   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Milk Посмотреть сообщение
Пока писал, придумал изврат: добавить новое поле в таблицу и вначале ключа поставить новое поле, которое никогда не будет заполняться, а потом уже "Entry No."... Гы, а ведь хоть какое-то решение
Так поставте фильтруемое поле вперед.
Старый 08.02.2008, 16:51   #3  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Так поставте фильтруемое поле вперед.
А тогда записи будут отсортированы по этому полю, а не по первичному ключу! Не катит...

Milk - а решение с фиктивным полем на самом деле классное! Действительно решит проблему.
Про то, что нельзя сделать вторичный, начинающийся с первичного - блин как-то не сталкивался ни разу,
и не знал про это. Или знал - но забыл...
Старый 08.02.2008, 17:06   #4  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от rov Посмотреть сообщение
А тогда записи будут отсортированы по этому полю, а не по первичному ключу! Не катит...
Так зачем тогда фильтр накладывать? Или изначально подразумевается сложный фильтр?
По поводу доп. поля пустого - это не добавить производительности никак. Мне не понятно цель операции в таком случае.
Старый 11.02.2008, 09:04   #5  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Мне не понятно цель операции в таком случае.
ну вообще это конечно вопрос к автору - для чего ему это надо.
Но я бы с ходу придумал бы такой пример:
необходимость отследить хронологию ФИФО. Для этого необходимо отфильтровать ТКО по типу "Продажа"
(этого в задаче нет - но суть не меняется), затем налоджить фильтр по дате, например с 01.02.08 по 05.02.08.
Причем записи должны быть отсортированы по первичному ключу. В результате, если не было нарушений
хронологии учета - то все даты в операциях будут возрастать. Более свежая операция - большая дата. А если
хронология нарушена - то более свежие даты будут в начале списка, ну или раньше, чем менее свежие даты.
Старый 11.02.2008, 10:58   #6  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от rov Посмотреть сообщение
ну вообще это конечно вопрос к автору - для чего ему это надо.
Но я бы с ходу придумал бы такой пример:
необходимость отследить хронологию ФИФО. Для этого необходимо отфильтровать ТКО по типу "Продажа"
(этого в задаче нет - но суть не меняется), затем налоджить фильтр по дате, например с 01.02.08 по 05.02.08.
Вторичный ключ работает нормально
Цитата:
Причем записи должны быть отсортированы по первичному ключу. В результате, если не было нарушений
хронологии учета - то все даты в операциях будут возрастать. Более свежая операция - большая дата. А если
хронология нарушена - то более свежие даты будут в начале списка, ну или раньше, чем менее свежие даты.
Во-первых не забываем, что в NAV в конце каждого вторичного ключа добавляется первичный (типа для уникальности, но более правильно описано в доке по SQL). Поэтому обычно они и будут либо возрастать (ASC), либо убывать (DESC)
Во-вторых, корректные нарушения так не выявишь
Старый 08.02.2008, 16:52   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Так поставте фильтруемое поле вперед.
Это тоже самое, что просто сделать вторичный ключ только по фильтруемому полю. И это не подходит
 


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

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

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