Таблица 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,
которая определяет статусы заказов для фильтрации при расчете статистики