现在客户要求这么一张报表
横向为年龄
竖向为项目名称
有各种条件每次客户进入页面都要点击一下开始分析,报表生成起来很慢,现在要求优化,加上了缓存,但是第一次生成报表的时候还是需要等待,想用计划任务跑一下,但是想到了各种搜索条件组合起来有很多情况,没有实施,求优化思路!
当前表结构
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
按条件组合跑太笨重了吧,看这条件也没几个,把数据跑成单表,按索引+分页查单表应该也问题不大,实在不行加个es也比跑组合条件强。仅供参考