You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RuoYi-Vue/sql_refacor0120/t_stock_daily_trade.sql

38 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- 个股每日交易数据表分区表去掉外键解决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月数据'
);