GroupF
V2EX  ›  MySQL

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

By GroupF at 2020 年 11 月 13 日 · 4351 次点击

mysql 5.7

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

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

8 条回复  •  2020-11-14 10:16:47 +08:00
kely
   1
kely  
   2020 年 11 月 13 日 via Android   ❤️ 1
你加个年的字段,然后加个年的索引试试?
huijiewei
   2
huijiewei  
   2020 年 11 月 13 日   ❤️ 1
直接用 <> 就是了。按说 between 会走索引的
sagaxu
   3
sagaxu  
   2020 年 11 月 13 日 via Android   ❤️ 1
只要 2020 年数据占比超过 10%,就有很大几率扫全表
c6h6benzene
   4
c6h6benzene  
   2020 年 11 月 13 日 via iPhone   ❤️ 1
那就用>=2020-01-01 试试?
dustinth
   5
dustinth  
   2020 年 11 月 14 日
没有 context, 没有 constrain, 没有目标, 谈优化无意义; 就像一楼说的, 加个年字段肯定是最快的的.
xiangyuecn
   6
xiangyuecn  
   2020 年 11 月 14 日
字符串?无脑 like 前缀匹配
GroupF
   7
GroupF  
OP
   2020 年 11 月 14 日
@dustinth 嗯,谢谢
Leigg
   8
Leigg  
   2020 年 11 月 14 日 via iPhone
sum 字段也得建索引
› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
© 2026 V2EX · 44ms · 3.9.8.5