方法一:
sql = "select {xxx} from student A,class B where A.class_id=B.id and A.id in {xxxx}"
res = excute(sql)
方法二:
sql = "select * from student where id in {xxxx}"
res = excute(sql)
foreach(res as v){
sql2 = "select {xxx} from class where id = v[class_id]";
res2 = excute(sql2)
res[xxx] = res2[xxx]
}
很初级的问题,不过还是问一下
我之前对这种情况都是用方法一的,觉得没商量;
但最近发现有人用第二种方法,内部系统,访问量小,所以也没啥影响,但他说第一种会增加mysql压力,可能会造成mysql故障,我就怀有迟疑态度了。
请比较熟悉的人帮我分析一下,谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
第一种更简介明了,一般用第一种。
实际哪种性能更好会跟 student和 class两个表相对大小有关。
如果第二种方式系统负载低,其实可以把sql 优化成这样:
sql = "select {xxx} from (select * from student where id in (1,2,3))
A,class B where A.class_id=B.id "