Предлагаю обратить внимание на количество ассортиментов, которые генерируют пользователи, поскольку они по этим ассортиментам потом отчеты гоняют.
Итак,
SQL код:
select count(*) from supermag.sacardassort;
должно выдавать разумное число ассортиментов при делении на общее количество пользователей, которые с ними работают.
Далее
SQL код:
select count(*) from supermag.smcardassort;
должно выдавать разумное число карточек по отношению к общему числу находящихся в обороте.
И, наконец, обратите внимание на число ассортиментов, пополняющихся автоматом
SQL код:
select count(*) from supermag.sacardassort where flags=10;
(пишу по памяти и там битовая маска, скорее всего, поэтому прошу поправить, если ошибся)
Все эти числа влияют на быстродействие отчетов по ассортиментам, а последнее - на скорость проведения накладных. При диких числах задача оптимизации становится нерешаемой.