версия 2.0.5: сводный прайс — весь одним запросом (быстрее при всех прайсах)

LoadPrice дробил прайс на страницы по 20000, а сервер на каждую страницу заново
прогонял тяжёлую оконную дедупликацию + COUNT. При всех подключённых прайсах
(~52к позиций) это ~6-7с. Тянем всё одним запросом → один прогон (~1.2с).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Exest 2026-08-13 12:54:14 +03:00
parent e8357bab1e
commit cc2c128cb2
3 changed files with 8 additions and 7 deletions

View File

@ -3,7 +3,7 @@
#define MyAppName "Электронная Фармация" #define MyAppName "Электронная Фармация"
#define MyAppBrand "ЭльФиСА" #define MyAppBrand "ЭльФиСА"
#define MyAppVersion "2.0.4" #define MyAppVersion "2.0.5"
#define MyAppPublisher "PharmData" #define MyAppPublisher "PharmData"
#define MyAppURL "https://cdn.24pharmdata.ru" #define MyAppURL "https://cdn.24pharmdata.ru"
#define MyAppSupportURL "https://24pharmdata.ru" #define MyAppSupportURL "https://24pharmdata.ru"

View File

@ -5,9 +5,9 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault> <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<Version>2.0.4</Version> <Version>2.0.5</Version>
<AssemblyVersion>2.0.4.0</AssemblyVersion> <AssemblyVersion>2.0.5.0</AssemblyVersion>
<FileVersion>2.0.4.0</FileVersion> <FileVersion>2.0.5.0</FileVersion>
<Product>ЭльФиСА — Электронная Фармация</Product> <Product>ЭльФиСА — Электронная Фармация</Product>
<Company>PharmData</Company> <Company>PharmData</Company>
<!-- Кросс-платформенная публикация задаётся флагами CLI (RID + self-contained). --> <!-- Кросс-платформенная публикация задаётся флагами CLI (RID + self-contained). -->

View File

@ -61,9 +61,10 @@ public partial class LoadPriceViewModel : ViewModelBase
ProgressText = "Соединение с сервером…"; ProgressText = "Соединение с сервером…";
var all = new List<PriceItem>(); var all = new List<PriceItem>();
// Большая страница: сервер на каждый запрос заново прогоняет тяжёлый // Весь прайс одним запросом: сервер на КАЖДЫЙ запрос заново прогоняет тяжёлую
// сводный запрос, поэтому одна большая страница в разы быстрее десятков мелких. // оконную дедупликацию (и COUNT для total), поэтому дробление на страницы
const int page = 20000; // умножает нагрузку. Одна большая страница = один прогон = в разы быстрее.
const int page = 500000;
int offset = 0, total = 0; int offset = 0, total = 0;
while (true) while (true)