|
![]() |
#1 |
Участник
|
закрытие склада, сопоставление. и подобные задачи.
там где ведется поиск первых подходящих записей... а после того, как найдено, выполняется обработка, которая меняет входящий набор. в результате (языком аксапты) приходится делать queryrun.reset Цитата:
правда SQL напрягается и готовит результаты для всей выборки, а не для 100 записей. а в выборке может быть 100500+ записей Цитата:
Поэтому и спрашиваю. А вообще говоря, весь интернет именно на этом и живет - без paiging ни один боль-мень серьезный форум, ни один фейсбук-вконтакт не выживет. я ж привел ссылку "идея разбиения на страницы, например, здесь http://www.quizful.net/post/paging-in-sql " можно еще поискать. бггг. вообще говоря, выборка индексов и выборка данных по найденным индексам - на SQL - это разные вещи ![]() Давайте вернемся к вопросу. В Аксапте кто-нибудь этот paging использовал? Последний раз редактировалось mazzy; 25.09.2015 в 10:52. |
|
![]() |
#2 |
Участник
|
Цитата:
Facebook, VK и другие используют витрины данных, в которых находятся актуальные данные, например, за последнюю неделю или день. Также они использую горячий кэш и другое. Кстати, витрины данных очень часто используются в DWH: когда в хранилище есть данные за 20 лет, а, фактически, для оперативного анализа нужны данные только за последнюю неделю. В качестве решения делают витрину данных, куда с помощью ETL/ELT собирают нужные актуальные часто используемые данные. Даже in-memory системы у которых время выполнения "запроса" на порядки меньше чем у ROLAP, также используют витрины. Иначе не хватит никакой памяти :-) Также можно подумать о партицировании таблицы: то есть физически разбивать таблицу на несколько более мелких таблиц. Этот метод очень активно используется в SSAS на более-менее крупных данных. В AX хорошим примеров витрины данных является InventSum. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Weez (1). |
![]() |
#3 |
Участник
|
Цитата:
Цитата:
поэтому и спрашиваю опыт работы, впечатления и ссылку на доку. Цитата:
Сообщение от AP-1055D
![]() Я думаю, что вы немного неправильно употребляете термин пагинация (paging). Пагинация это механизм, с помощью которого можно "отдавать" данные определёнными порциями. В терминах MVC (Model-View-Controller) это C (Controller). По ссылке, которую вы привели, речь идёт как раз о том, как можно отдавать клиенту небольшое количество записей.
... В AX хорошим примеров витрины данных является InventSum. Да, клиент запрашивает порцию, а SQL отдает и готовит только порцию, а не всю выборку. Да, у SQL возникают дополнительные накладные расходы когда запрашивается порция, близкая к концу выборки. но я не зря начал говорить про операции типа "сопоставление" ))) см. начало ветки. да, про витрины данных понял. ========================== мне коллеги подсказали доку. оказывается есть описалово. оказывается по-русски это называется "подкачка данных". кто бы мог подумать! дока в книге "Справочник профессионала. Microsoft Dynamics AX 2009". Авторы Ларс Олсен и прочие. вышло в 2009 году под патронажем АНД Проджект Скриншоты: https://yadi.sk/i/mSWTMBbKjNH8H https://yadi.sk/i/9xTQDYjAjNHAs https://yadi.sk/i/buBvwyYCjNHCw https://yadi.sk/i/yfToQi9sjNHEB Да, как я и ожидал, используется ROW_NUMBER со всеми его ограничениями, достоинствами и недостатками. https://msdn.microsoft.com/ru-ru/lib...=sql.110).aspx https://support.microsoft.com/ru-ru/kb/186133 Спасибо! |
|
|
За это сообщение автора поблагодарили: Maxim Gorbunov (2), Dumfag (1). |
![]() |
#4 |
Участник
|
Не совсем так. SQL Server будет обрабатывать все 1000 записей или более, потом наложит на них ограничение в виде TOP или ROW_NUMBER и выдаст как раз те самые 10 записей. Для простых запрос, возможно, получиться сократить объём обрабатываемых данных до 900 записей, а может и не получится.
|
|
Теги |
paging, подкачка данных |
|
|