Heim >Backend-Entwicklung >PHP-Tutorial >mysql多表查询+分页如何实现最优?
问的并不是如何联合查询,只是看到有人说对于大数据量来说最好不要使用多表联合查询,因此想要知道怎样写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等等