задержкой.
Как показано на рисунке ниже, при нажатии в этом месте возникают серьезные проблемы с производительностью.
Проблемный участок:
(1) После проверки кода было установлено, что здесь используется регулярное выражение (regexp) для поиска данных, что приводит к замедлению на 4 секунды при работе с 400 000 записями.
(2) В последней версии открытого исходного кода проблема остаётся без изменений.
Файл с проблемой: /core/class/table/table_resources_path.php
Временное решение:
Замена SQL: select p.fid from %t p left join %t f on p.fid = f.fid where p.path LIKE %s and f.deldateline < 1
На данный момент временно прекращено использование оператора LIKE для оптимизации запроса, что позволяет работать со 100 000 записями за 0,8 секунды, однако при увеличении объёма данных производительность снова начинает снижаться.
Рекомендованная стратегия:
(1) Общее улучшение логики и структуры данных, включая добавление первичного ключа для таблицы с данными каталога, чтобы избежать полнотекстового поиска.
(2) Использование кэширования для ускорения поиска данных.