|
|
-- 个股每日交易数据表:分区表(去掉外键,解决MySQL限制)
|
|
|
--去掉外键后,需通过以下方式确保 t_stock_daily_trade 的 stock_code 一定存在于 t_stock_basic(避免脏数据):
|
|
|
--批量导入前校验(推荐,无性能损耗)
|
|
|
-- 在执行 LOAD DATA INFILE 导入数据前,先通过 SQL 过滤掉 “不存在的 stock_code”,适用于每日批量导入场景(与你之前的导入脚本结合)。
|
|
|
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`),
|
|
|
|
|
|
-- 索引:优化按日期、个股代码的查询(保留原设计)
|
|
|
INDEX `idx_t_stock_daily_trade_date` (`trade_date`),
|
|
|
INDEX `idx_t_stock_daily_trade_code` (`stock_code`) -- 新增:优化按个股查询的效率
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
|
-- 表注释:移到分区前(之前已修复的语法问题)
|
|
|
COMMENT='A股个股每日交易数据-按月分区'
|
|
|
-- 按月分区(保留原设计,确保性能优势)
|
|
|
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月数据'
|
|
|
); |