项目场景:
提示:30万数据 动态查出用户拥有对应 skuid 数量:
如 skuid1 skuid2 skuid3 skuid4 …
表结构如下
CREATE TABLE `eb_nft_user` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`skuId` varchar(255) NOT NULL DEFAULT '' COMMENT '商品编码',`nftId` varchar(255) NOT NULL DEFAULT '' COMMENT '的唯编码',`skuName` varchar(255) NOT NULL DEFAULT '' COMMENT '商品的名称',`add_time` varchar(50) DEFAULT NULL,`user_id` int(10) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,KEY `skuId` (`skuId`) USING BTREE,KEY `user_id` (`user_id`) USING BTREE,KEY `nftId` (`nftId`) USING BTREE,KEY `idx_user_sku` (`user_id`,`skuId`),KEY `idx_eb_nft_user_user_sku` (`user_id`,`skuId`)
) ENGINE=InnoDB AUTO_INCREMENT=340998 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户拥有的id';
原有在加索引情况下 查询160个分类 大概需要 7到8秒 这是业务不能接受的
代码如下
SELECT`user_id`,SUM( CASE WHEN skuId = 26330 THEN 1 ELSE 0 END ) AS a_26330,SUM( CASE WHEN skuId = 26329 THEN 1 ELSE 0 END ) AS a_26329,SUM( CASE WHEN skuId = 26328 THEN 1 ELSE 0 END ) AS a_26328,SUM( CASE WHEN skuId = 26327 THEN 1 ELSE 0 END ) AS a_26327,SUM( CASE WHEN skuId = 26326 THEN 1 ELSE 0 END ) AS a_26326,SUM( CASE WHEN skuId = 26322 THEN 1 ELSE 0 END ) AS a_26322,SUM( CASE WHEN skuId = 25182 THEN 1 ELSE 0 END ) AS a_25182,SUM( CASE WHEN skuId = 25133 THEN 1 ELSE 0 END ) AS a_25133,SUM( CASE WHEN skuId = 24293 THEN 1 ELSE 0 END ) AS a_24293,SUM( CASE WHEN skuId = 24288 THEN 1 ELSE 0 END ) AS a_24288,SUM( CASE WHEN skuId = 24286 THEN 1 ELSE 0 END ) AS a_24286,SUM( CASE WHEN skuId = 24285 THEN 1 ELSE 0 END ) AS a_24285,SUM( CASE WHEN skuId = 24261 THEN 1 ELSE 0 END ) AS a_24261,SUM( CASE WHEN skuId = 24260 THEN 1 ELSE 0 END ) AS a_24260,SUM( CASE WHEN skuId = 23006 THEN 1 ELSE 0 END ) AS a_23006,SUM( CASE WHEN skuId = 23005 THEN 1 ELSE 0 END ) AS a_23005,SUM( CASE WHEN skuId = 22631 THEN 1 ELSE 0 END ) AS a_22631,SUM( CASE WHEN skuId = 22628 THEN 1 ELSE 0 END ) AS a_22628,SUM( CASE WHEN skuId = 22317 THEN 1 ELSE 0 END ) AS a_22317,SUM( CASE WHEN skuId = 22156 THEN 1 ELSE 0 END ) AS a_22156,SUM( CASE WHEN skuId = 22153 THEN 1 ELSE 0 END ) AS a_22153,SUM( CASE WHEN skuId = 22152 THEN 1 ELSE 0 END ) AS a_22152,SUM( CASE WHEN skuId = 22151 THEN 1 ELSE 0 END ) AS a_22151,SUM( CASE WHEN skuId = 21801 THEN 1 ELSE 0 END ) AS a_21801,SUM( CASE WHEN skuId = 21481 THEN 1 ELSE 0 END ) AS a_21481,SUM( CASE WHEN skuId = 21480 THEN 1 ELSE 0 END ) AS a_21480,SUM( CASE WHEN skuId = 21479 THEN 1 ELSE 0 END ) AS a_21479,SUM( CASE WHEN skuId = 21478 THEN 1 ELSE 0 END ) AS a_21478,SUM( CASE WHEN skuId = 21279 THEN 1 ELSE 0 END ) AS a_21279,SUM( CASE WHEN skuId = 20650 THEN 1 ELSE 0 END ) AS a_20650,SUM( CASE WHEN skuId = 20649 THEN 1 ELSE 0 END ) AS a_20649,SUM( CASE WHEN skuId = 20648 THEN 1 ELSE 0 END ) AS a_20648,SUM( CASE WHEN skuId = 20647 THEN 1 ELSE 0 END ) AS a_20647,SUM( CASE WHEN skuId = 20509 THEN 1 ELSE 0 END ) AS a_20509,SUM( CASE WHEN skuId = 20403 THEN 1 ELSE 0 END ) AS a_20403,SUM( CASE WHEN skuId = 20106 THEN 1 ELSE 0 END ) AS a_20106,SUM( CASE WHEN skuId = 19882 THEN 1 ELSE 0 END ) AS a_19882,SUM( CASE WHEN skuId = 19506 THEN 1 ELSE 0 END ) AS a_19506,SUM( CASE WHEN skuId = 19505 THEN 1 ELSE 0 END ) AS a_19505,SUM( CASE WHEN skuId = 19437 THEN 1 ELSE 0 END ) AS a_19437,SUM( CASE WHEN skuId = 19401 THEN 1 ELSE 0 END ) AS a_19401,SUM( CASE WHEN skuId = 19400 THEN 1 ELSE 0 END ) AS a_19400,SUM( CASE WHEN skuId = 19399 THEN 1 ELSE 0 END ) AS a_19399,SUM( CASE WHEN skuId = 19128 THEN 1 ELSE 0 END ) AS a_19128,SUM( CASE WHEN skuId = 18926 THEN 1 ELSE 0 END ) AS a_18926,SUM( CASE WHEN skuId = 18925 THEN 1 ELSE 0 END ) AS a_18925,SUM( CASE WHEN skuId = 18924 THEN 1 ELSE 0 END ) AS a_18924,SUM( CASE WHEN skuId = 18923 THEN 1 ELSE 0 END ) AS a_18923,SUM( CASE WHEN skuId = 18864 THEN 1 ELSE 0 END ) AS a_18864,SUM( CASE WHEN skuId = 18789 THEN 1 ELSE 0 END ) AS a_18789,SUM( CASE WHEN skuId = 18788 THEN 1 ELSE 0 END ) AS a_18788,SUM( CASE WHEN skuId = 18538 THEN 1 ELSE 0 END ) AS a_18538,SUM( CASE WHEN skuId = 18404 THEN 1 ELSE 0 END ) AS a_18404,SUM( CASE WHEN skuId = 18403 THEN 1 ELSE 0 END ) AS a_18403,SUM( CASE WHEN skuId = 18402 THEN 1 ELSE 0 END ) AS a_18402,SUM( CASE WHEN skuId = 18400 THEN 1 ELSE 0 END ) AS a_18400,SUM( CASE WHEN skuId = 18365 THEN 1 ELSE 0 END ) AS a_18365,SUM( CASE WHEN skuId = 18131 THEN 1 ELSE 0 END ) AS a_18131,SUM( CASE WHEN skuId = 18017 THEN 1 ELSE 0 END ) AS a_18017,SUM( CASE WHEN skuId = 18016 THEN 1 ELSE 0 END ) AS a_18016,SUM( CASE WHEN skuId = 18015 THEN 1 ELSE 0 END ) AS a_18015,SUM( CASE WHEN skuId = 18014 THEN 1 ELSE 0 END ) AS a_18014,SUM( CASE WHEN skuId = 17931 THEN 1 ELSE 0 END ) AS a_17931,SUM( CASE WHEN skuId = 17744 THEN 1 ELSE 0 END ) AS a_17744,SUM( CASE WHEN skuId = 17743 THEN 1 ELSE 0 END ) AS a_17743,SUM( CASE WHEN skuId = 17742 THEN 1 ELSE 0 END ) AS a_17742,SUM( CASE WHEN skuId = 17741 THEN 1 ELSE 0 END ) AS a_17741,SUM( CASE WHEN skuId = 17599 THEN 1 ELSE 0 END ) AS a_17599,SUM( CASE WHEN skuId = 17357 THEN 1 ELSE 0 END ) AS a_17357,SUM( CASE WHEN skuId = 17356 THEN 1 ELSE 0 END ) AS a_17356,SUM( CASE WHEN skuId = 17355 THEN 1 ELSE 0 END ) AS a_17355,SUM( CASE WHEN skuId = 17354 THEN 1 ELSE 0 END ) AS a_17354,SUM( CASE WHEN skuId = 17216 THEN 1 ELSE 0 END ) AS a_17216,SUM( CASE WHEN skuId = 17199 THEN 1 ELSE 0 END ) AS a_17199,SUM( CASE WHEN skuId = 16924 THEN 1 ELSE 0 END ) AS a_16924,SUM( CASE WHEN skuId = 16884 THEN 1 ELSE 0 END ) AS a_16884,SUM( CASE WHEN skuId = 16502 THEN 1 ELSE 0 END ) AS a_16502,SUM( CASE WHEN skuId = 16501 THEN 1 ELSE 0 END ) AS a_16501,SUM( CASE WHEN skuId = 16500 THEN 1 ELSE 0 END ) AS a_16500,SUM( CASE WHEN skuId = 16499 THEN 1 ELSE 0 END ) AS a_16499,SUM( CASE WHEN skuId = 16451 THEN 1 ELSE 0 END ) AS a_16451,SUM( CASE WHEN skuId = 16450 THEN 1 ELSE 0 END ) AS a_16450,SUM( CASE WHEN skuId = 16449 THEN 1 ELSE 0 END ) AS a_16449,SUM( CASE WHEN skuId = 16448 THEN 1 ELSE 0 END ) AS a_16448,SUM( CASE WHEN skuId = 16100 THEN 1 ELSE 0 END ) AS a_16100,SUM( CASE WHEN skuId = 16099 THEN 1 ELSE 0 END ) AS a_16099,SUM( CASE WHEN skuId = 15879 THEN 1 ELSE 0 END ) AS a_15879,SUM( CASE WHEN skuId = 15733 THEN 1 ELSE 0 END ) AS a_15733,SUM( CASE WHEN skuId = 15732 THEN 1 ELSE 0 END ) AS a_15732,SUM( CASE WHEN skuId = 15731 THEN 1 ELSE 0 END ) AS a_15731,SUM( CASE WHEN skuId = 15730 THEN 1 ELSE 0 END ) AS a_15730,SUM( CASE WHEN skuId = 15594 THEN 1 ELSE 0 END ) AS a_15594,SUM( CASE WHEN skuId = 15361 THEN 1 ELSE 0 END ) AS a_15361,SUM( CASE WHEN skuId = 15141 THEN 1 ELSE 0 END ) AS a_15141,SUM( CASE WHEN skuId = 15110 THEN 1 ELSE 0 END ) AS a_15110,SUM( CASE WHEN skuId = 15040 THEN 1 ELSE 0 END ) AS a_15040,SUM( CASE WHEN skuId = 14965 THEN 1 ELSE 0 END ) AS a_14965,SUM( CASE WHEN skuId = 14873 THEN 1 ELSE 0 END ) AS a_14873,SUM( CASE WHEN skuId = 14872 THEN 1 ELSE 0 END ) AS a_14872,SUM( CASE WHEN skuId = 14871 THEN 1 ELSE 0 END ) AS a_14871,SUM( CASE WHEN skuId = 14870 THEN 1 ELSE 0 END ) AS a_14870,SUM( CASE WHEN skuId = 14670 THEN 1 ELSE 0 END ) AS a_14670,SUM( CASE WHEN skuId = 14668 THEN 1 ELSE 0 END ) AS a_14668,SUM( CASE WHEN skuId = 14667 THEN 1 ELSE 0 END ) AS a_14667,SUM( CASE WHEN skuId = 14666 THEN 1 ELSE 0 END ) AS a_14666,SUM( CASE WHEN skuId = 14665 THEN 1 ELSE 0 END ) AS a_14665,SUM( CASE WHEN skuId = 14664 THEN 1 ELSE 0 END ) AS a_14664,SUM( CASE WHEN skuId = 14568 THEN 1 ELSE 0 END ) AS a_14568,SUM( CASE WHEN skuId = 14517 THEN 1 ELSE 0 END ) AS a_14517,SUM( CASE WHEN skuId = 14253 THEN 1 ELSE 0 END ) AS a_14253,SUM( CASE WHEN skuId = 14252 THEN 1 ELSE 0 END ) AS a_14252,SUM( CASE WHEN skuId = 14251 THEN 1 ELSE 0 END ) AS a_14251,SUM( CASE WHEN skuId = 14250 THEN 1 ELSE 0 END ) AS a_14250,SUM( CASE WHEN skuId = 14249 THEN 1 ELSE 0 END ) AS a_14249,SUM( CASE WHEN skuId = 14248 THEN 1 ELSE 0 END ) AS a_14248,SUM( CASE WHEN skuId = 14247 THEN 1 ELSE 0 END ) AS a_14247,SUM( CASE WHEN skuId = 14145 THEN 1 ELSE 0 END ) AS a_14145,SUM( CASE WHEN skuId = 14115 THEN 1 ELSE 0 END ) AS a_14115,SUM( CASE WHEN skuId = 14113 THEN 1 ELSE 0 END ) AS a_14113,SUM( CASE WHEN skuId = 14099 THEN 1 ELSE 0 END ) AS a_14099,SUM( CASE WHEN skuId = 13983 THEN 1 ELSE 0 END ) AS a_13983,SUM( CASE WHEN skuId = 13980 THEN 1 ELSE 0 END ) AS a_13980,SUM( CASE WHEN skuId = 13916 THEN 1 ELSE 0 END ) AS a_13916,SUM( CASE WHEN skuId = 13915 THEN 1 ELSE 0 END ) AS a_13915,SUM( CASE WHEN skuId = 13914 THEN 1 ELSE 0 END ) AS a_13914,SUM( CASE WHEN skuId = 13913 THEN 1 ELSE 0 END ) AS a_13913,SUM( CASE WHEN skuId = 13912 THEN 1 ELSE 0 END ) AS a_13912,SUM( CASE WHEN skuId = 13857 THEN 1 ELSE 0 END ) AS a_13857,SUM( CASE WHEN skuId = 13856 THEN 1 ELSE 0 END ) AS a_13856,SUM( CASE WHEN skuId = 13855 THEN 1 ELSE 0 END ) AS a_13855,SUM( CASE WHEN skuId = 13853 THEN 1 ELSE 0 END ) AS a_13853,SUM( CASE WHEN skuId = 13835 THEN 1 ELSE 0 END ) AS a_13835,SUM( CASE WHEN skuId = 13763 THEN 1 ELSE 0 END ) AS a_13763,SUM( CASE WHEN skuId = 13762 THEN 1 ELSE 0 END ) AS a_13762,SUM( CASE WHEN skuId = 13761 THEN 1 ELSE 0 END ) AS a_13761,SUM( CASE WHEN skuId = 13760 THEN 1 ELSE 0 END ) AS a_13760,SUM( CASE WHEN skuId = 13626 THEN 1 ELSE 0 END ) AS a_13626,SUM( CASE WHEN skuId = 13624 THEN 1 ELSE 0 END ) AS a_13624,SUM( CASE WHEN skuId = 13623 THEN 1 ELSE 0 END ) AS a_13623,SUM( CASE WHEN skuId = 13622 THEN 1 ELSE 0 END ) AS a_13622,SUM( CASE WHEN skuId = 13608 THEN 1 ELSE 0 END ) AS a_13608,SUM( CASE WHEN skuId = 13527 THEN 1 ELSE 0 END ) AS a_13527,SUM( CASE WHEN skuId = 13483 THEN 1 ELSE 0 END ) AS a_13483,SUM( CASE WHEN skuId = 13454 THEN 1 ELSE 0 END ) AS a_13454,SUM( CASE WHEN skuId = 13381 THEN 1 ELSE 0 END ) AS a_13381,SUM( CASE WHEN skuId = 21802 THEN 1 ELSE 0 END ) AS a_21802,SUM( CASE WHEN skuId = 26331 THEN 1 ELSE 0 END ) AS a_26331,SUM( CASE WHEN skuId = 26332 THEN 1 ELSE 0 END ) AS a_26332,SUM( CASE WHEN skuId = 26333 THEN 1 ELSE 0 END ) AS a_26333
FROM`eb_nft_user`
GROUP BY`user_id`
HAVINGSUM( CASE WHEN skuId = 26330 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26329 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26328 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26327 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26326 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26322 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 25182 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 25133 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24293 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24288 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24286 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24285 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24261 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 24260 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 23006 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 23005 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22631 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22628 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22317 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22156 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22153 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22152 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 22151 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21801 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21481 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21480 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21479 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21478 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21279 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20650 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20649 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20648 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20647 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20509 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20403 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 20106 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19882 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19506 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19505 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19437 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19401 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19400 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19399 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 19128 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18926 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18925 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18924 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18923 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18864 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18789 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18788 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18538 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18404 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18403 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18402 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18400 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18365 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18131 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18017 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18016 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18015 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 18014 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17931 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17744 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17743 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17742 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17741 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17599 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17357 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17356 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17355 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17354 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17216 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 17199 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16924 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16884 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16502 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16501 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16500 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16499 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16451 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16450 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16449 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16448 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16100 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 16099 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15879 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15733 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15732 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15731 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15730 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15594 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15361 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15141 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15110 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 15040 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14965 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14873 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14872 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14871 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14870 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14670 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14668 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14667 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14666 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14665 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14664 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14568 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14517 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14253 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14252 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14251 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14250 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14249 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14248 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14247 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14145 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14115 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14113 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 14099 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13983 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13980 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13916 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13915 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13914 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13913 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13912 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13857 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13856 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13855 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13853 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13835 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13763 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13762 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13761 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13760 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13626 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13624 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13623 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13622 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13608 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13527 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13483 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13454 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 13381 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 21802 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26331 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26332 THEN 1 ELSE 0 END ) >= 1 AND SUM( CASE WHEN skuId = 26333 THEN 1 ELSE 0 END ) >=1
索引也都正常添加 命中率也是 100%
业务复杂度相当于 n(用户) * skuid * num(数量) n的3次方
想到可以利用视图 将复杂度降低 n(用户) * skuid
CREATETEMPORARY TABLE temp_sku_counts AS
SELECT user_id,skuId,COUNT(*) as count
FROM eb_nft_user
GROUP BY user_id, skuId;
#建立复合索引
CREATE INDEX idx_temp_user_sku ON temp_sku_counts(user_id, skuId);
查询的时候直接查询视图
SELECTuser_id,SUM(IF( skuId = 26330, count, 0 )) AS a_26330,SUM(IF( skuId = 26329, count, 0 )) AS a_26329,SUM(IF( skuId = 26328, count, 0 )) AS a_26328,SUM(IF( skuId = 26327, count, 0 )) AS a_26327,SUM(IF( skuId = 26326, count, 0 )) AS a_26326,SUM(IF( skuId = 26322, count, 0 )) AS a_26322,SUM(IF( skuId = 25182, count, 0 )) AS a_25182,SUM(IF( skuId = 25133, count, 0 )) AS a_25133,SUM(IF( skuId = 24293, count, 0 )) AS a_24293,SUM(IF( skuId = 24288, count, 0 )) AS a_24288,SUM(IF( skuId = 24286, count, 0 )) AS a_24286,SUM(IF( skuId = 24285, count, 0 )) AS a_24285,SUM(IF( skuId = 24261, count, 0 )) AS a_24261,SUM(IF( skuId = 24260, count, 0 )) AS a_24260,SUM(IF( skuId = 23006, count, 0 )) AS a_23006,SUM(IF( skuId = 23005, count, 0 )) AS a_23005,SUM(IF( skuId = 22631, count, 0 )) AS a_22631,SUM(IF( skuId = 22628, count, 0 )) AS a_22628,SUM(IF( skuId = 22317, count, 0 )) AS a_22317,SUM(IF( skuId = 22156, count, 0 )) AS a_22156,SUM(IF( skuId = 22153, count, 0 )) AS a_22153,SUM(IF( skuId = 22152, count, 0 )) AS a_22152,SUM(IF( skuId = 22151, count, 0 )) AS a_22151,SUM(IF( skuId = 21801, count, 0 )) AS a_21801,SUM(IF( skuId = 21481, count, 0 )) AS a_21481,SUM(IF( skuId = 21480, count, 0 )) AS a_21480,SUM(IF( skuId = 21479, count, 0 )) AS a_21479,SUM(IF( skuId = 21478, count, 0 )) AS a_21478,SUM(IF( skuId = 21279, count, 0 )) AS a_21279,SUM(IF( skuId = 20650, count, 0 )) AS a_20650,SUM(IF( skuId = 20649, count, 0 )) AS a_20649,SUM(IF( skuId = 20648, count, 0 )) AS a_20648,SUM(IF( skuId = 20647, count, 0 )) AS a_20647,SUM(IF( skuId = 20509, count, 0 )) AS a_20509,SUM(IF( skuId = 20403, count, 0 )) AS a_20403,SUM(IF( skuId = 20106, count, 0 )) AS a_20106,SUM(IF( skuId = 19882, count, 0 )) AS a_19882,SUM(IF( skuId = 19506, count, 0 )) AS a_19506,SUM(IF( skuId = 19505, count, 0 )) AS a_19505,SUM(IF( skuId = 19437, count, 0 )) AS a_19437,SUM(IF( skuId = 19401, count, 0 )) AS a_19401,SUM(IF( skuId = 19400, count, 0 )) AS a_19400,SUM(IF( skuId = 19399, count, 0 )) AS a_19399,SUM(IF( skuId = 19128, count, 0 )) AS a_19128,SUM(IF( skuId = 18926, count, 0 )) AS a_18926,SUM(IF( skuId = 18925, count, 0 )) AS a_18925,SUM(IF( skuId = 18924, count, 0 )) AS a_18924,SUM(IF( skuId = 18923, count, 0 )) AS a_18923,SUM(IF( skuId = 18864, count, 0 )) AS a_18864,SUM(IF( skuId = 18789, count, 0 )) AS a_18789,SUM(IF( skuId = 18788, count, 0 )) AS a_18788,SUM(IF( skuId = 18538, count, 0 )) AS a_18538,SUM(IF( skuId = 18404, count, 0 )) AS a_18404,SUM(IF( skuId = 18403, count, 0 )) AS a_18403,SUM(IF( skuId = 18402, count, 0 )) AS a_18402,SUM(IF( skuId = 18400, count, 0 )) AS a_18400,SUM(IF( skuId = 18365, count, 0 )) AS a_18365,SUM(IF( skuId = 18131, count, 0 )) AS a_18131,SUM(IF( skuId = 18017, count, 0 )) AS a_18017,SUM(IF( skuId = 18016, count, 0 )) AS a_18016,SUM(IF( skuId = 18015, count, 0 )) AS a_18015,SUM(IF( skuId = 18014, count, 0 )) AS a_18014,SUM(IF( skuId = 17931, count, 0 )) AS a_17931,SUM(IF( skuId = 17744, count, 0 )) AS a_17744,SUM(IF( skuId = 17743, count, 0 )) AS a_17743,SUM(IF( skuId = 17742, count, 0 )) AS a_17742,SUM(IF( skuId = 17741, count, 0 )) AS a_17741,SUM(IF( skuId = 17599, count, 0 )) AS a_17599,SUM(IF( skuId = 17357, count, 0 )) AS a_17357,SUM(IF( skuId = 17356, count, 0 )) AS a_17356,SUM(IF( skuId = 17355, count, 0 )) AS a_17355,SUM(IF( skuId = 17354, count, 0 )) AS a_17354,SUM(IF( skuId = 17216, count, 0 )) AS a_17216,SUM(IF( skuId = 17199, count, 0 )) AS a_17199,SUM(IF( skuId = 16924, count, 0 )) AS a_16924,SUM(IF( skuId = 16884, count, 0 )) AS a_16884,SUM(IF( skuId = 16502, count, 0 )) AS a_16502,SUM(IF( skuId = 16501, count, 0 )) AS a_16501,SUM(IF( skuId = 16500, count, 0 )) AS a_16500,SUM(IF( skuId = 16499, count, 0 )) AS a_16499,SUM(IF( skuId = 16451, count, 0 )) AS a_16451,SUM(IF( skuId = 16450, count, 0 )) AS a_16450,SUM(IF( skuId = 16449, count, 0 )) AS a_16449,SUM(IF( skuId = 16448, count, 0 )) AS a_16448,SUM(IF( skuId = 16100, count, 0 )) AS a_16100,SUM(IF( skuId = 16099, count, 0 )) AS a_16099,SUM(IF( skuId = 15879, count, 0 )) AS a_15879,SUM(IF( skuId = 15733, count, 0 )) AS a_15733,SUM(IF( skuId = 15732, count, 0 )) AS a_15732,SUM(IF( skuId = 15731, count, 0 )) AS a_15731,SUM(IF( skuId = 15730, count, 0 )) AS a_15730,SUM(IF( skuId = 15594, count, 0 )) AS a_15594,SUM(IF( skuId = 15361, count, 0 )) AS a_15361,SUM(IF( skuId = 15141, count, 0 )) AS a_15141,SUM(IF( skuId = 15110, count, 0 )) AS a_15110,SUM(IF( skuId = 15040, count, 0 )) AS a_15040,SUM(IF( skuId = 14965, count, 0 )) AS a_14965,SUM(IF( skuId = 14873, count, 0 )) AS a_14873,SUM(IF( skuId = 14872, count, 0 )) AS a_14872,SUM(IF( skuId = 14871, count, 0 )) AS a_14871,SUM(IF( skuId = 14870, count, 0 )) AS a_14870,SUM(IF( skuId = 14670, count, 0 )) AS a_14670,SUM(IF( skuId = 14668, count, 0 )) AS a_14668,SUM(IF( skuId = 14667, count, 0 )) AS a_14667,SUM(IF( skuId = 14666, count, 0 )) AS a_14666,SUM(IF( skuId = 14665, count, 0 )) AS a_14665,SUM(IF( skuId = 14664, count, 0 )) AS a_14664,SUM(IF( skuId = 14568, count, 0 )) AS a_14568,SUM(IF( skuId = 14517, count, 0 )) AS a_14517,SUM(IF( skuId = 14253, count, 0 )) AS a_14253,SUM(IF( skuId = 14252, count, 0 )) AS a_14252,SUM(IF( skuId = 14251, count, 0 )) AS a_14251,SUM(IF( skuId = 14250, count, 0 )) AS a_14250,SUM(IF( skuId = 14249, count, 0 )) AS a_14249,SUM(IF( skuId = 14248, count, 0 )) AS a_14248,SUM(IF( skuId = 14247, count, 0 )) AS a_14247,SUM(IF( skuId = 14145, count, 0 )) AS a_14145,SUM(IF( skuId = 14115, count, 0 )) AS a_14115,SUM(IF( skuId = 14113, count, 0 )) AS a_14113,SUM(IF( skuId = 14099, count, 0 )) AS a_14099,SUM(IF( skuId = 13983, count, 0 )) AS a_13983,SUM(IF( skuId = 13980, count, 0 )) AS a_13980,SUM(IF( skuId = 13916, count, 0 )) AS a_13916,SUM(IF( skuId = 13915, count, 0 )) AS a_13915,SUM(IF( skuId = 13914, count, 0 )) AS a_13914,SUM(IF( skuId = 13913, count, 0 )) AS a_13913,SUM(IF( skuId = 13912, count, 0 )) AS a_13912,SUM(IF( skuId = 13857, count, 0 )) AS a_13857,SUM(IF( skuId = 13856, count, 0 )) AS a_13856,SUM(IF( skuId = 13855, count, 0 )) AS a_13855,SUM(IF( skuId = 13853, count, 0 )) AS a_13853,SUM(IF( skuId = 13835, count, 0 )) AS a_13835,SUM(IF( skuId = 13763, count, 0 )) AS a_13763,SUM(IF( skuId = 13762, count, 0 )) AS a_13762,SUM(IF( skuId = 13761, count, 0 )) AS a_13761,SUM(IF( skuId = 13760, count, 0 )) AS a_13760,SUM(IF( skuId = 13626, count, 0 )) AS a_13626,SUM(IF( skuId = 13624, count, 0 )) AS a_13624,SUM(IF( skuId = 13623, count, 0 )) AS a_13623,SUM(IF( skuId = 13622, count, 0 )) AS a_13622,SUM(IF( skuId = 13608, count, 0 )) AS a_13608,SUM(IF( skuId = 13527, count, 0 )) AS a_13527,SUM(IF( skuId = 13483, count, 0 )) AS a_13483,SUM(IF( skuId = 13454, count, 0 )) AS a_13454,SUM(IF( skuId = 13381, count, 0 )) AS a_13381,SUM(IF( skuId = 21802, count, 0 )) AS a_21802,SUM(IF( skuId = 26331, count, 0 )) AS a_26331,SUM(IF( skuId = 26332, count, 0 )) AS a_26332,SUM(IF( skuId = 26333, count, 0 )) AS a_26333
FROMeb_temp_sku_counts
GROUP BYuser_id
HAVINGa_26330 >= 1 AND a_26329 >= 1 AND a_26328 >= 1 AND a_26327 >= 1 AND a_26326 >= 1 AND a_26322 >= 1 AND a_25182 >= 1 AND a_25133 >= 1 AND a_24293 >= 1 AND a_24288 >= 1 AND a_24286 >= 1 AND a_24285 >= 1 AND a_24261 >= 1 AND a_24260 >= 1 AND a_23006 >= 1 AND a_23005 >= 1 AND a_22631 >= 1 AND a_22628 >= 1 AND a_22317 >= 1 AND a_22156 >= 1 AND a_22153 >= 1 AND a_22152 >= 1 AND a_22151 >= 1 AND a_21801 >= 1 AND a_21481 >= 1 AND a_21480 >= 1 AND a_21479 >= 1 AND a_21478 >= 1 AND a_21279 >= 1 AND a_20650 >= 1 AND a_20649 >= 1 AND a_20648 >= 1 AND a_20647 >= 1 AND a_20509 >= 1 AND a_20403 >= 1 AND a_20106 >= 1 AND a_19882 >= 1 AND a_19506 >= 1 AND a_19505 >= 1 AND a_19437 >= 1 AND a_19401 >= 1 AND a_19400 >= 1 AND a_19399 >= 1 AND a_19128 >= 1 AND a_18926 >= 1 AND a_18925 >= 1 AND a_18924 >= 1 AND a_18923 >= 1 AND a_18864 >= 1 AND a_18789 >= 1 AND a_18788 >= 1 AND a_18538 >= 1 AND a_18404 >= 1 AND a_18403 >= 1 AND a_18402 >= 1 AND a_18400 >= 1 AND a_18365 >= 1 AND a_18131 >= 1 AND a_18017 >= 1 AND a_18016 >= 1 AND a_18015 >= 1 AND a_18014 >= 1 AND a_17931 >= 1 AND a_17744 >= 1 AND a_17743 >= 1 AND a_17742 >= 1 AND a_17741 >= 1 AND a_17599 >= 1 AND a_17357 >= 1 AND a_17356 >= 1 AND a_17355 >= 1 AND a_17354 >= 1 AND a_17216 >= 1 AND a_17199 >= 1 AND a_16924 >= 1 AND a_16884 >= 1 AND a_16502 >= 1 AND a_16501 >= 1 AND a_16500 >= 1 AND a_16499 >= 1 AND a_16451 >= 1 AND a_16450 >= 1 AND a_16449 >= 1 AND a_16448 >= 1 AND a_16100 >= 1 AND a_16099 >= 1 AND a_15879 >= 1 AND a_15733 >= 1 AND a_15732 >= 1 AND a_15731 >= 1 AND a_15730 >= 1 AND a_15594 >= 1 AND a_15361 >= 1 AND a_15141 >= 1 AND a_15110 >= 1 AND a_15040 >= 1 AND a_14965 >= 1 AND a_14873 >= 1 AND a_14872 >= 1 AND a_14871 >= 1 AND a_14870 >= 1 AND a_14670 >= 1 AND a_14668 >= 1 AND a_14667 >= 1 AND a_14666 >= 1 AND a_14665 >= 1 AND a_14664 >= 1 AND a_14568 >= 1 AND a_14517 >= 1 AND a_14253 >= 1 AND a_14252 >= 1 AND a_14251 >= 1 AND a_14250 >= 1 AND a_14249 >= 1 AND a_14248 >= 1 AND a_14247 >= 1 AND a_14145 >= 1 AND a_14115 >= 1 AND a_14113 >= 1 AND a_14099 >= 1 AND a_13983 >= 1 AND a_13980 >= 1 AND a_13916 >= 1 AND a_13915 >= 1 AND a_13914 >= 1 AND a_13913 >= 1 AND a_13912 >= 1 AND a_13857 >= 1 AND a_13856 >= 1 AND a_13855 >= 1 AND a_13853 >= 1 AND a_13835 >= 1 AND a_13763 >= 1 AND a_13762 >= 1 AND a_13761 >= 1 AND a_13760 >= 1 AND a_13626 >= 1 AND a_13624 >= 1 AND a_13623 >= 1 AND a_13622 >= 1 AND a_13608 >= 1 AND a_13527 >= 1 AND a_13483 >= 1 AND a_13454 >= 1 AND a_13381 >= 1 AND a_21802 >= 1 AND a_26331 >= 1 AND a_26332 >= 1 AND a_26333 >= 1
查询时间快了 五秒左右 勉强还能接受