
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 PRO 加个 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 PRO 如果不做特殊 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 现代陈世美,良心被狗吃了 |