有关php业务逻辑,mysql优化问题

有一个usr表存着uid,username
业务表1 ,存的信息有字段uid,username
业务表2 ,存的信息仅有uid,
(业务表2多条数据对应业务表1一条数据)

问题出现的环境背景及自己尝试的方法

现有:查询遍历业务表2,数据是数组list,还需在list上组装username,以便于前端显示
方法一是每一条list根据uid去数据库usr表查询username;
方法二是先遍历查询业务表1,用一个空数组arr,key存uid,对应的value存username,遍历list,使用array_key_exists判断uid是否是arr其中一个键,如果是则获取arr[uid],作为username

疑问

方法二好处就是避免了多次数据库查询username,但是存在疑问用空数组的key存uid,假如uid数值很大,比如10000,这样是不是会涉及到php数组内存问题(这方面知识不是很了解)
还想知道方法二是不是还有别的缺点,如果有,是不是有其他更好的处理方法


海绵宝宝撒
浏览 320回答 3
3回答

呼如林

select t2.uid as t2uid,t1.uid as t1uid,t1.username from table2 as t2 join table1 as t1 on t2.uid = t1.uid 这样一次性就查询出结果了,前端遍历展示

不负相思意

了解下多表联查,或者直接了解 join 的使用方法就好,这个问题并不难,是业务上常见的需求

达令说

直接使用join on , 或者left join on 都行, 或者你可以尝试mysql的 in() 方法
打开App,查看更多内容
随时随地看视频慕课网APP