-- 个股每日交易数据表:大表,按“交易日期”按月分区(MySQL原生分区) CREATE TABLE `t_stock_daily_trade` ( `stock_code` VARCHAR(20) NOT NULL COMMENT '证券代码(关联t_stock_basic)', `trade_date` DATE NOT NULL COMMENT '交易日期', `open_price` DECIMAL(10,2) NULL COMMENT '开盘价(单位:元)', `close_price` DECIMAL(10,2) NOT NULL COMMENT '收盘价(单位:元)', `high_price` DECIMAL(10,2) NULL COMMENT '最高价(单位:元)', `low_price` DECIMAL(10,2) NULL COMMENT '最低价(单位:元)', `price_change_rate` DECIMAL(6,4) NULL COMMENT '当日涨跌幅(百分比)', `volume` BIGINT NULL COMMENT '成交量(单位:股)', `turnover` DECIMAL(20,2) NULL COMMENT '成交额(单位:万元)', `free_circulation_cap` DECIMAL(20,2) NULL COMMENT '自由流通市值(单位:万元)', `is_limit_up` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否涨停(1=是,0=否)', `is_limit_down` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否跌停(1=是,0=否)', `momentum_10d` DECIMAL(6,4) NULL COMMENT '10日动量(涨跌幅)', `momentum_20d` DECIMAL(6,4) NULL COMMENT '20日动量(涨跌幅)', `momentum_60d` DECIMAL(6,4) NULL COMMENT '60日动量(涨跌幅)', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', -- 复合主键:确保“个股代码+日期”唯一 PRIMARY KEY (`stock_code`, `trade_date`), -- 外键:关联个股基础表,确保个股代码有效性 FOREIGN KEY (`stock_code`) REFERENCES `t_stock_basic` (`stock_code`) ON UPDATE RESTRICT ON DELETE RESTRICT, -- 索引:优化按日期查询所有个股交易数据的场景 INDEX `idx_t_stock_daily_trade_date` (`trade_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 -- 按“交易日期”按月分区(示例:2024年12月-2025年3月,后续可扩展) PARTITION BY RANGE (TO_DAYS(`trade_date`)) ( PARTITION `p202412` VALUES LESS THAN (TO_DAYS('2025-01-01')) COMMENT '2024年12月数据', PARTITION `p202501` VALUES LESS THAN (TO_DAYS('2025-02-01')) COMMENT '2025年1月数据', PARTITION `p202502` VALUES LESS THAN (TO_DAYS('2025-03-01')) COMMENT '2025年2月数据', PARTITION `p202503` VALUES LESS THAN (TO_DAYS('2025-04-01')) COMMENT '2025年3月数据' ) COMMENT='A股个股每日交易数据(按月分区)';