您的当前位置:首页 > 资讯 > postgresql
select查询算法优化
2018-09-27 13:37:08 来源:admin 点击:911
1.如果我们遇到了循环更新的问题
2.表结构如下,假设数学、英语、化学、语文得重其他表中查询获得!!
人 | 数学 | 英语 | 化学 | 语文 |
name1 | ||||
name2 | ||||
name3 |
3.这样需要我们重其他数据表中查出name1的数学成绩、英语成绩、化学成绩、语文成绩更新到这个表中,name2同理,name3也一样
4.第一种方法,我们可以先把name这一列循环一遍,看都有哪些人,之后再把这个人的各科成绩查询出来,update到这个表中,
foreach ($peopleid as $v) {
查询出这个人对应的各科成绩
$test_people = DB::table('people')
->update([
'科目' => 各科成绩,
'name' => $v,
]);
}
这样有多少个人我们就得更新多少次,如果数据量增大,导致系统崩溃
5,我们也可以一次性更新
$RiverCountAndriverkm = DB::select("UPDATE people set 语文= b.语文,数学= b.数学 FROM
(select name, SUM(语文) as 语文,count(*) as 数学 from 表其他 where status = 1 group by name) b where people.
name= b.name and 其他条件);
如果遇到多个可以多次更新,但速度只是一条sql的速度,和多少人没有关系,效率会大大提高
orderBy 和groupBy一起存在的时候怎么查询
SELECT D from D表 where id in(SELECT A from A表 where B = 1111 GROUP BY A) ORDER BY rank,
SELECT a.monitoringtype,b.count from A表 as a ,(SELECT partstype as name,"count"(partstype) as count from B表 where manageaid = 1111 GROUP BY partstype) as b where a.id = b.name ORDER BY a.mrank