现在客户要求这么一张报表
横向为年龄 竖向为项目名称 有各种条件每次客户进入页面都要点击一下开始分析,报表生成起来很慢,现在要求优化,加上了缓存,但是第一次生成报表的时候还是需要等待,想用计划任务跑一下,但是想到了各种搜索条件组合起来有很多情况,没有实施,求优化思路!
当前表结构
CREATE TABLE `xx_table1` ( `id` bigint NOT NULL, `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '编号', `full_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '姓名', `gender` tinyint NOT NULL DEFAULT '0' COMMENT '性别', `age` smallint DEFAULT '0' COMMENT '年龄', `idcard` varchar(33) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '身份证号', `resident_address` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '常驻地址', `resident_address_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '常驻地址行政编码', `registered_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '户籍地址', `registered_address_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '户籍地址行政编码', `birthday` date DEFAULT '0000-00-00' COMMENT '生日', `dead_date` datetime DEFAULT NULL COMMENT '死亡日期', `dead_place_code` bigint NOT NULL DEFAULT '0' COMMENT '死亡地点', `family_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '家属姓名', `family_tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '家属联系电话', `created_at` datetime DEFAULT NULL COMMENT '创建时间', `created_by` bigint NOT NULL COMMENT '创建人', `is_audit` tinyint NOT NULL DEFAULT '1' COMMENT '是否审核', `audit_by` bigint DEFAULT NULL COMMENT '审核人', `audit_at` datetime DEFAULT NULL COMMENT '审核时间', `year` int NOT NULL DEFAULT '0' COMMENT '年份', `item_id` int NOT NULL DEFAULT '0' COMMENT '项目 id', `area_code` bigint DEFAULT '0' COMMENT '地区代码', PRIMARY KEY (`id`) USING BTREE, KEY `p_fi_idx` (`full_name`,`idcard`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='XX 表'; 索引还没加
数据量大于 100W!
想到了把数据跑成单表,但是没做过,不知道要怎么写,不知道单表要怎么建,求大老指点
