MySQL中的聚合表(Aggregate Table)是一种预先计算并存储了数据汇总信息的表。这种表通常用于加速复杂查询,特别是在数据仓库和分析系统中。通过预先计算和存储汇总数据,可以显著减少实时查询的计算量,从而提高查询性能。
以下是一个简单的示例,展示如何创建一个汇总表来存储某个电商网站的月销售额:
-- 创建基础销售表
CREATE TABLE sales (
sale_id INT PRIMARY KEY,
product_id INT,
sale_date DATE,
amount DECIMAL(10, 2)
);
-- 插入一些示例数据
INSERT INTO sales (sale_id, product_id, sale_date, amount) VALUES
(1, 101, '2023-01-01', 100.00),
(2, 102, '2023-01-02', 200.00),
...;
-- 创建汇总表来存储每月的总销售额
CREATE TABLE monthly_sales_summary (
month DATE,
total_sales DECIMAL(10, 2),
PRIMARY KEY (month)
);
-- 使用触发器或定期任务来更新汇总表
DELIMITER //
CREATE TRIGGER update_monthly_sales
AFTER INSERT ON sales
FOR EACH ROW
BEGIN
DECLARE month_start DATE;
SET month_start = DATE_FORMAT(NEW.sale_date, '%Y-%m-01');
-- 更新或插入汇总数据
INSERT INTO monthly_sales_summary (month, total_sales)
VALUES (month_start, (SELECT IFNULL(SUM(amount), 0) FROM sales WHERE DATE_FORMAT(sale_date, '%Y-%m') = DATE_FORMAT(month_start, '%Y-%m')))
ON DUPLICATE KEY UPDATE total_sales = VALUES(total_sales);
END//
DELIMITER ;
请注意,以上示例代码仅供参考,实际应用中可能需要根据具体需求进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云