НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
133 of 152 menu

Таблица oc_statistics

Таблица oc_statistics используется для хранения предварительно рассчитанных статистических данных о деятельности интернет-магазина. Она служит кэшем для ускорения работы отчетов в административной панели, избавляя систему от необходимости выполнять сложные агрегирующие запросы к большим таблицам (таким как oc_order) каждый раз при открытии отчета.

Поля

Поле Тип данных Описание
statistics_id int Уникальный идентификатор записи статистики. Первичный ключ с автоинкрементом.
code varchar(64) Код типа статистики. Определяет, какие именно данные хранятся в записи. Основные значения: order_sale (общая сумма продаж), order_processing (заказы в обработке), order_complete (завершенные заказы), order_other (заказы в других статусах), returns (возвраты), customer (количество клиентов), affiliate (количество партнеров), product (количество товаров), review (количество отзывов).
value decimal(15,4) Значение статистического показателя. Для большинства типов статистики (количество заказов, клиентов, товаров) хранится как целое число. Для финансовых показателей (order_sale) хранится с точностью до 4 знаков после запятой.

Как это работает

Система OpenCart периодически (например, по cron-заданию или при определенных событиях) пересчитывает ключевые метрики магазина и сохраняет их в таблицу oc_statistics. Когда администратор открывает раздел с отчетами (например, панель управления или отчет по продажам), система не выполняет тяжелые запросы к таблице заказов, а быстро выбирает готовые данные из этой таблицы.

Каждый тип данных имеет свой уникальный code. Например, для отображения виджета "Общая сумма продаж" на главной странице админ-панели система делает простой запрос:

SELECT value FROM oc_statistics WHERE code = 'order_sale';

Это значительно быстрее, чем вычислять сумму всех завершенных заказов напрямую из oc_order каждый раз.

Процесс обновления статистики обычно запускается по расписанию (например, раз в день) для снижения нагрузки на базу данных. При этом старые записи в таблице могут либо обновляться, либо добавляться новые с привязкой к дате (хотя стандартная реализация OpenCart чаще всего хранит только актуальные итоговые значения без истории).

Пример SQL-запроса

Посмотреть все текущие статистические данные можно запросом:

SELECT * FROM oc_statistics ORDER BY code;

Для принудительного пересчета статистики (например, после массового импорта данных) можно использовать встроенные методы OpenCart или выполнить очистку и заполнение таблицы вручную:

-- Очистка таблицы (осторожно!) TRUNCATE TABLE oc_statistics; -- Вставка актуальных данных о продажах (пример) INSERT INTO oc_statistics (code, value) SELECT 'order_sale', SUM(total) FROM oc_order WHERE order_status_id IN (SELECT order_status_id FROM oc_order_status WHERE name = 'Complete');

Смотрите также

  • таблицу oc_order,
    которая является основным источником данных для статистики продаж
  • таблицу oc_customer,
    из которой берутся данные о количестве клиентов
  • таблицу oc_product,
    которая содержит информацию о товарах для подсчета их количества
  • таблицу oc_order_status,
    которая определяет статусы заказов для фильтрации при расчете статистики
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить