欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

mysql多表查询+分页如何实现最优?

程序员文章站 2022-04-17 09:40:20
...
问的并不是如何联合查询,只是看到有人说对于大数据量来说最好不要使用多表联合查询,因此想要知道怎样写sql从多表获取分页好的数据列表才是最优的。
补充:假如有两张表:A表是主表、而B表中的数据是查询A表的筛选条件之一

回复内容:

问的并不是如何联合查询,只是看到有人说对于大数据量来说最好不要使用多表联合查询,因此想要知道怎样写sql从多表获取分页好的数据列表才是最优的。
补充:假如有两张表:A表是主表、而B表中的数据是查询A表的筛选条件之一

先查出一张表记录的ids,然后用在另一张表使用 in 查询

没有具体的业务场景谈优化都是耍流氓啊.
在A表增加B表的冗余字段,直接在A表上做查询就可以取到一页的内容,并且关联的B表的其他信息也能直接取到,或者通过B表的id能在缓存中取到.

这样的优化会增加维护成本,但是范式级别越低,查询效率越高.

仅供参考.

有些特殊业务场景是必须要用联合查询的吧。不能单纯的盲目优化。
ids in查询,如果ids取出来就几万个。那还不如直接联合查询呢。虽然这方案很好。

优化是指在不影响业务的前提下,如果只是为了优化而优化就╮(╯▽╰)╭

分页可以参考http://segmentfault.com/q/10100000001...

至于优化查询,本质上说,先要优化数据结构,仔细想想你是否必须非要用两个表,一个行不行。还有你对数据库内置函数的了解程度,比如left(), right(), substring(), substring_index()。还有 mid(), substr()。不要动不动就LIKE等等,主要还是多写,根据实际应用场景来做出最优判断。

顺便一说MYSQL配置本身也可以进行很多优化,比如query_cache等等

相关标签: mysql php