四、示例场景
假设系统需存储每日百万级关键词发布记录,按时间分表:
sql
创建基表结构
CREATE TABLE keyword_template (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
keyword VARCHAR(255) NOT NULL,
user_id BIGINT NOT NULL,
publish_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
按月动态创建分表(如每月初执行)
DELIMITER //
CREATE PROCEDURE create_monthly_table()
BEGIN
DECLARE current_month VARCHAR(6);
SET current_month = DATE_FORMAT(NOW(), '%Y%m');
SET @sql = CONCAT('CREATE TABLE keyword_', current_month, ' LIKE keyword_template');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
应用层插入逻辑(伪代码)
function insertKeyword(keyword, userId) {
let month = new Date().format('YYYYMM');
let tableName = `keyword_${month}`;
db.query(`INSERT INTO ${tableName} (keyword, user_id) VALUES (?, ?)`, [keyword, userId]);
}