问题描述
在获取文章列表中,想要显示创建文章的用户姓名,一般是根据leftjoin获取还是循环获取的数据再去根据uid去查用户表?
left join去获取比循环根据uid查用户表快很多, 目前手上的项目有些列表就是查完之后再一条条去查用户名, 有时候一个表甚至要查好几分钟. 改成联合查询之后, 速度和跑一条sql的速度差不多, 基本是秒查
4 回答1.7k 阅读✓ 已解决
8 回答1.4k 阅读
3 回答1.4k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
4 回答2.3k 阅读
3 回答1.2k 阅读✓ 已解决
为什么要循环获取的数据呢?(不要在循环里执行sql啊喂)
你可以用
array_unique(array_column())
取出文章表的用户id,然后用
in 用户id
的方式查询出用户的id对应的名字,再遍历文章表增加文章作者名字这也是一种方式。谁快谁慢,我还真没测试过。
关联查询的时候,会锁表,高并发的时候,会造成一定的性能影响。
但是,有句话不是说么,应当尽量减少数据库的操作次数。这里还是有取舍的
总之还是看你们具体的业务情况吧