SQL 的一个问题

2017-04-17 07:09:36 +08:00
 esolve

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 前,有一个括号子查询是啥意思 这是什么语法?

1409 次点击
所在节点    问与答
8 条回复
des
2017-04-17 07:13:48 +08:00
这是子查询,另外不存在表 a 。拜托你们好好看看语法吧。
Jakesoft
2017-04-17 08:27:30 +08:00
虚拟表
hiro0729
2017-04-17 08:55:04 +08:00
文章中说了,利用表的覆盖索引来加速分页查询,
也就是说 先在子查询里仅对主键进行分页操作,因为主键有索引,速度会快很多
esolve
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
2017-04-17 08:56:54 +08:00
@hiro0729 我知道,我只是对这个语句的语法看不懂
artandlol
2017-04-17 09:00:20 +08:00
limit 这么用 很慢很慢
esolve
2017-04-17 19:10:26 +08:00
@artandlol 我问的是语法,和子查询,性能无关啊,呵呵
aborigine
2017-04-17 19:27:23 +08:00
@esolve #7 as 可以省略的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355300

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX