Ye0522. 2023-11-28 10:28 采纳率: 0%
浏览 9
已结题

QT开发:如何解决512个字段100万行的MySQL导出问题?

目前开发QT时,碰到公司一个产品,使用Linux上的MySQL数据库。其中有一个电压数据表,包含1个主键id、1个time字段UTC时间、512个电压字段,每秒钟增加一条记录,最大100万行,1.5个G。需要按time字段(无索引)导出某天的记录。这个表真的吐血了,随便查查都要1分钟以上,


SELECT * FROM `ems_data_1`.`bms1_rack1_vol` WHERE (time >= 1700784272) AND (time <=  1700784281);
/* 受影响记录行数: 0  已找到记录行: 10  警告: 0  持续时间 1 查询: 00:01:06.1 */

我目前的做法是,用MySQL的WHERE查询一天(也就是QT的setFilter),存到QSqlTableModel,然后再转成CSV,需要至少8分钟。还有其他解决方案吗?


CREATE TABLE `bms1_rack1_vol` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `time` INT(10) UNSIGNED NOT NULL,
    `v1` INT(10) NULL DEFAULT NULL,
    `v2` INT(10) NULL DEFAULT NULL,
    `v3` INT(10) NULL DEFAULT NULL,
    `v4` INT(10) NULL DEFAULT NULL,
    `v5` INT(10) NULL DEFAULT NULL,
    `v6` INT(10) NULL DEFAULT NULL,
    `v7` INT(10) NULL DEFAULT NULL,
    `v8` INT(10) NULL DEFAULT NULL,
    `v9` INT(10) NULL DEFAULT NULL,
    `v10` INT(10) NULL DEFAULT NULL,
/*字数限制,这里还有490行省略了。数据库不是我做的,量产产品也基本不能改。*/
    `v500` INT(10) NULL DEFAULT NULL,
    `v501` INT(10) NULL DEFAULT NULL,
    `v502` INT(10) NULL DEFAULT NULL,
    `v503` INT(10) NULL DEFAULT NULL,
    `v504` INT(10) NULL DEFAULT NULL,
    `v505` INT(10) NULL DEFAULT NULL,
    `v506` INT(10) NULL DEFAULT NULL,
    `v507` INT(10) NULL DEFAULT NULL,
    `v508` INT(10) NULL DEFAULT NULL,
    `v509` INT(10) NULL DEFAULT NULL,
    `v510` INT(10) NULL DEFAULT NULL,
    `v511` INT(10) NULL DEFAULT NULL,
    `v512` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=348331
;


  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月6日
    • 创建了问题 11月28日

    悬赏问题

    • ¥15 msix packaging tool打包问题
    • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线