1
8355 2017-04-01 10:19:20 +08:00
没太看懂你写的 sql
不过问性能来说你运行一下就知道了啊. |
2
AlisaDestiny 2017-04-01 10:19:31 +08:00
这个你可以自己测下的。表里插入 1W 假数据。每个 sql 语句执行十次。看平均时间。
|
3
killerv 2017-04-01 10:22:25 +08:00 via iPhone
mysql 子查询比较坑,慎重使用。
|
4
zioc OP |
7
JKeita 2017-04-01 10:47:58 +08:00
explain 一下看了下查询,应该是第一条比较快
|
8
surfire91 2017-04-01 10:50:26 +08:00
恕我眼拙,这个跟 SELECT * FROM API_LOG LIMIT 0, 10 有啥区别
|
9
fxxkgw 2017-04-01 10:55:58 +08:00
没看懂 但是慎用笛卡尔积
|
11
qfdk 2017-04-01 11:33:11 +08:00 via iPhone
加个 index 有想不到的结果
|
12
zander1024 2017-04-01 12:29:37 +08:00
我不懂这个 Join 有卵用?.. 可能是我 mysql 学的假的
|
13
AnonymousAccout 2017-04-01 12:33:54 +08:00 via iPhone
好吧 第二个里的子查询那个 select * from 也没用吧...
|
14
sujin190 2017-04-01 13:00:34 +08:00
WHERE IN 又子查询在 mysql 上的实现似乎是上一级的查询的每一条数据做一次子查询, mysql 文档上似乎有详细解释,可以去看下,我记得是这么写的,还是用第一种好
|
15
luckyduck 2017-04-01 13:03:16 +08:00
楼上看不懂的是因为不了解什么叫覆盖索引。。。
|
16
sujin190 2017-04-01 13:11:35 +08:00
|
17
danielmiao 2017-04-01 13:17:14 +08:00
不理解这么做的意义。。是吧 mysql 优化器当傻 bi ~~~~了么
|
19
zioc OP @surfire91
@raycloud 直接 limit 数据量偏移大了会变慢,这个是偏移 ID 主键 @AnonymousAccout 加 SELECT * FROM 是 MySQL 不允许 Limit IN 在子查询里面 |
20
realpg 2017-04-01 18:51:37 +08:00
如果不做特殊 CACHE 标记,测试只有第一次有意义……
|
21
satifanie 2017-04-02 16:14:38 +08:00
单看 也看不出来。 不如直接 Explain 一下。看一下 分析的结果就知道了
|
22
luckyduck 2017-04-03 19:17:57 +08:00
@surfire91 覆盖索引的意思就是指直接通过索引的查询就能获取到数据。例如: select id from table 这个 id 是主键,仅仅通过索引查询就能返回结果, select * from table 这里则需要先查到主键,再通过主键获取剩余字段的值,这也就是为什么前者比后者快。
|
23
panzhc 2017-04-05 18:56:26 +08:00
|
24
garodie 2017-04-17 07:12:27 +08:00 via iPhone
现代陈世美,良心被狗吃了
|