请问 ,我有一张一百万数据的表,然后插入的时间顺序是乱的,时间格式是 '2020-01-01 00:00:00' 这样的数据(后面的时分秒都是'00:00:00'),求 2020 年某个字段的 sum 值

2020-11-13 20:30:28 +08:00
 GroupF

mysql 5.7

我根据时间建立普通索引,然后用大于小于,between,substring,like,全走的 all,可能整个数据库表都是 2020 的数据

倒是看 8.0 有个函数索引。。

3096 次点击
所在节点    MySQL
8 条回复
kely
2020-11-13 21:24:35 +08:00
你加个年的字段,然后加个年的索引试试?
huijiewei
2020-11-13 21:30:37 +08:00
直接用 <> 就是了。按说 between 会走索引的
sagaxu
2020-11-13 21:32:16 +08:00
只要 2020 年数据占比超过 10%,就有很大几率扫全表
c6h6benzene
2020-11-13 21:44:09 +08:00
那就用>=2020-01-01 试试?
dustinth
2020-11-14 01:06:22 +08:00
没有 context, 没有 constrain, 没有目标, 谈优化无意义; 就像一楼说的, 加个年字段肯定是最快的的.
xiangyuecn
2020-11-14 09:04:24 +08:00
字符串?无脑 like 前缀匹配
GroupF
2020-11-14 09:31:34 +08:00
@dustinth 嗯,谢谢
Leigg
2020-11-14 10:16:47 +08:00
sum 字段也得建索引

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/725008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX