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 楼说有范围查询的情况,没想通。
|