V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

SQL 的一个问题

  •  
  •   esolve · 2017-04-17 07:09:36 +08:00 · 1391 次点击
    这是一个创建于 2772 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://blog.csdn.net/u013252072/article/details/52912385 http://www.cnblogs.com/lpfuture/p/5772055.html

    上面两篇文章里,我看到两个类似的 sql 语句

    select * from b , (select tid from a limit 50000,200) a where b.id = a .tid; SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id

    我不懂,为何在,或者 join 后,表名 a 或者 b 前,有一个括号子查询是啥意思 这是什么语法?

    8 条回复    2017-04-17 19:27:23 +08:00
    des
        1
    des  
       2017-04-17 07:13:48 +08:00 via Android
    这是子查询,另外不存在表 a 。拜托你们好好看看语法吧。
    Jakesoft
        2
    Jakesoft  
       2017-04-17 08:27:30 +08:00 via iPhone
    虚拟表
    hiro0729
        3
    hiro0729  
       2017-04-17 08:55:04 +08:00
    文章中说了,利用表的覆盖索引来加速分页查询,
    也就是说 先在子查询里仅对主键进行分页操作,因为主键有索引,速度会快很多
    esolve
        4
    esolve  
    OP
       2017-04-17 08:55:58 +08:00
    @des 你意思(select tid from a limit 50000,200) a 的意思是 a 是这个子查询的结果?
    不是应该是(select tid from a limit 50000,200) as a?
    esolve
        5
    esolve  
    OP
       2017-04-17 08:56:54 +08:00
    @hiro0729 我知道,我只是对这个语句的语法看不懂
    artandlol
        6
    artandlol  
       2017-04-17 09:00:20 +08:00 via Android
    limit 这么用 很慢很慢
    esolve
        7
    esolve  
    OP
       2017-04-17 19:10:26 +08:00
    @artandlol 我问的是语法,和子查询,性能无关啊,呵呵
    aborigine
        8
    aborigine  
       2017-04-17 19:27:23 +08:00
    @esolve #7 as 可以省略的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:19 · PVG 15:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.