
1 zhaoxixiangban OP "id" "1" "select_type" "SIMPLE" "table" "fx_share" "partitions" "range" "type" "range" "possible_keys" "idx_userid,create_time_index" "key" "key_len" "create_time_index" "ref" "5" "rows" "217959" "filtered" "100" "Extra" "Using index condition; Using temporary; Using filesort" |
2 freebird1994 2020-05-11 10:52:31 +08:00 联合索引咯,share_user_id,create_time 。 |
3 gengz 2020-05-11 10:58:01 +08:00 建个索引(share_user_id, create_time) |
4 purensong 2020-05-11 11:02:31 +08:00 我想法是再派生出一列,把 create_time 的日期提取出来作为字段 date,加上索引,先筛选 date 再筛选 create_time |
5 dongisking 2020-05-11 11:14:38 +08:00 create_time 建索引不好,4F 方案不错 |
6 zhaoxixiangban OP @purensong 你是,增加字段 date copy create_time 字段,然后 [date> '2020-01-01 00:00:03' AND date<'2020-06-28 16:55:03' and create_time > '2020-01-01 00:00:03' AND create_time <'2020-06-28 16:55:03' ] 这样么? |
7 zhaoxixiangban OP @freebird1994 感谢 ,但是建立联合索引没有改善 |
8 zhaoxixiangban OP @gengz 感谢 ,但是建立联合索引没有改善 |
9 zhaoxixiangban OP @dongisking 嗯 我试试,谢谢 |
10 stevenkang 2020-05-11 11:38:14 +08:00 建议按粒度定时统计,要用时直接从统计表查。 12 小时以内的数据,按分钟统计; 1 周以内的数据,按小时统计; 一周以上的数据,按天统计; |
11 zhaoxixiangban OP @stevenkang 这个明天就要用,我也是这么想的,空间换时间。但是实现需要点时间,只能先上功能后面优化了。 |
12 goodboy95 2020-05-11 14:04:46 +08:00 为什么楼上是先 share_user_id 再 create_time 的?这按理说不应该是先筛 create_time,再照 share_user_id 去分组吗?我开始对自己的知识产生怀疑了…… 不过怀疑归怀疑,试一下建立(create_time, share_user_id)的组合索引吧,也算是帮我证明一下我的知识有没有问题了。 |
13 goodboy95 2020-05-11 14:06:14 +08:00 顺便把 FORCE_INDEX 去掉再看看,建组合索引之后 FORCE_INDEX 容易绊脚 |
14 zhaoxixiangban OP @goodboy95 #13 受教了,到 1s 内了。组合索引也有顺序问题,组合索引用 FORCE_INDEX 会有影响 |
15 jsq2627 2020-05-11 14:26:43 +08:00 |
16 zhaoxixiangban OP @jsq2627 #15 可以的 赞! |
17 sansanhehe 2020-05-11 16:37:51 +08:00 @zhaoxixiangban 所以你最终是用的(create_time, share_user_id)索引,还是(share_user_id, create_time)索引?有没有用 force index ?可以分享一下吗? |
18 goodboy95 2020-05-11 17:19:02 +08:00 @zhaoxixiangban 好吧,把范围查询的情况给忘了……确实先 share_user_id 才对…… |
19 zhaoxixiangban OP @sansanhehe #17 (share_user_id, create_time) 没有用 force index 参考 15 楼 |
20 kimchan 2020-05-12 14:39:46 +08:00 @zhaoxixiangban #19 想问下, 15 楼和 2 楼 3 楼有区别吗.. 因为我看你前面说的建立联合索引没有改善. 看的有点懵 |
21 zhaoxixiangban OP @kimchan #20 前面我没有去掉 “FORCE_INDEX” |
22 947030638 2020-05-14 08:34:51 +08:00 via iPhone 联合索引不是有顺序吗?先执行 where 再执行 group,createtime 比 shareuserid 先执行,所以为啥是 share_user_id, create_time |
23 zhaoxixiangban OP @947030638 #22 这个我也没有想通,很费解,但是(share_user_id, create_time) 确实很快。18 楼说有范围查询的情况,没想通。 ![]() |