有足够的开发资源的话,可以自己应用层 JOIN,先查主表,取出每条记录的关联字段 refKey,
组合成一个数组 refKeys,然后查副表时用 key IN($refKeys) 来优化,代价就是原本 SQL JOIN 几行解决的,
放到代码内要几十行,而且还多了数据库连接的开销,没加缓存的话还真不一定性能有 SQL JOIN 好。
好在 APIJSON 已经提供了自动化的 APP JOIN,就是自动用以上原理来优化,前端只要传一个 join 键值对就好了,
后端不用写任何代码,全自动解析为 userId IN($userIds) 这种 SQL。
数组关键词,可自定义
④ "join":"&/Table0/key0@,</Table1/key1@"
多表连接方式:
"<" - LEFT JOIN
">" - RIGHT JOIN
"&" - INNER JOIN
"|" - FULL JOIN
"!" - OUTTER JOIN
"@" - APP JOIN
其中 @ APP JOIN 为应用层连表,会从已查出的主表里取得所有副表 key@ 关联的主表内的 refKey 作为一个数组 refKeys: [value0, value1...],然后把原来副表 count 次查询 key=$refKey 的 SQL 用 key IN($refKeys) 的方式合并为一条 SQL 来优化性能;
其它 JOIN 都是 SQL JOIN,具体功能和 MySQL,PostgreSQL 等数据库的 JOIN 一一对应,
"ViceTable":{ "key@:".../MainTable/refKey" }
会对应生成
MainTable ... JOIN ViceTable ON ViceTable.key=MainTable.refKey。
https://github.com/TommyLemon/APIJSON/blob/master/Document.md#3.2Node.ts, Python, Go, PHP, Java, C# 多种语言实现,Android, iOS, JavaScript 多端 Demo,
还有 各种文档、视频教程、自动化接口管理工具 等。
码云最有价值开源项目:后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构!
GitHub 右上角点 Star 支持下吧 ^_^
https://github.com/TommyLemon/APIJSON