1
feiyuanqiu 2019-02-22 23:51:14 +08:00 via Android
explain 一下
|
2
ppyax 2019-02-23 00:12:15 +08:00 via Android
in 不能超 1000
|
3
1762628386 2019-02-23 00:16:23 +08:00
@ppyax 为啥
|
4
Leigg 2019-02-23 00:28:42 +08:00 via iPhone
分钟级别至少的吧
|
5
lynskylate 2019-02-23 00:31:26 +08:00 via Android
in 是 n^2 的,写这种 sql review 的时候都会被打回去的
|
6
binux 2019-02-23 04:41:39 +08:00 via Android
你干嘛不 select * from tab1 where mm = 6
|
7
deasty OP @binux 因为需要查询 mm = 6 的用户历史数据,表中存在同一个用户 mm = 5 和 mm = 6 的不同情况,需要都查询出来
|
8
opengps 2019-02-23 09:28:53 +08:00
没有索引,那么时间至少是全表大小硬盘读出的时间,再加上运算所需要的时间。先忽略运算部分,光读出部分就很耗时间了
|
9
leonme 2019-02-23 10:15:14 +08:00 via Android
@lynskylate 如何优化呢?
|
10
lynskylate 2019-02-23 17:17:56 +08:00 via Android
@leonme 通常用 join 代替 in, join 字段加索引,这个时间复杂度通常来说是 o n 的
|
11
winoros 2019-02-24 01:47:43 +08:00
那么为什么不加索引呢
|
12
luozic 2019-02-24 11:14:46 +08:00
为啥不用索引? 这种多的,要么搞个专门查询的 es 什么的,要么出钱。
|