题目是别人面试遇到的,总共6道,今天看了一下基本上不会1、使用伪代码,将下列界面中呈现的数据进行合并(我学数据库的时候没听过伪代码这玩意啊,帮忙解答下)
 
NUM QTY
1 3
3 4
2 5
1 6
4 7
3 8
2 7
结果为:
NUM QTY
1 9
2 14
3 12
4 9
2、请给出任意一程序设计样式示例!
3、SQL性能优化考察
业务场景:在大数据量的情况下,下面的SQL语句效率低下:
Select * from sa where sa.goodsid not in(select goods.goodsid from goods)Select * from sa where sa.goodsid not exist ()
要求一:请对上述语句进行优化
要求二:请阐述对于SQL语句,你是如何判断其性能的,并说明在出现性能问题的原因
4、SQL禁例
业务场景:存在下述的程序写法
Update TABLENAME set COLUMN = XXX where WHERES
IF 执行失败 THEN
   提示窗口
   ROLLBACK;
ELSE
COMMIT;
END IF;
要求请判断这种写法是否合适,并说明原因
5、数据并发
业务场景:存在以下表,其中状态为1的允许删除,状态为2的不允许删除
SALSTID(主键) GOODSID GOODSQTY STATE
1 78 60 1
2 89 79 2
3 33 80 2
要求:在考虑并发的情况下,给出上述删除处理的伪代码
6、大数据处理
业务场景:存在以下表,大约有100万条记录
ID(主键) ID2
   
要求:使用存储过程,将ID2更新为ID+10

解决方案 »

  1.   

    1.select num,sum(qty) from tbl group by num order by num.不知道最后那个4怎么对应了9??
      

  2.   

    .select num,sum(qty) from tbl group by num order by num
      

  3.   

    3、Select * From Sa 
           Where Sa.Goodsid 
                 Not In 
                     (Select Goods.Goodsid From Goods) --100%全表扫描
    Select * From sa s 
           Where 
                  Not Exists 
                      (Select g.goodsid From goods Where s.goodsid = g.goodsid);--最坏情况下是全表扫描6、Begin
    Alter Table Table_Name Nologging
    Select * From Table_Name For Update;
    Update Table_Name Set Id2 = Id + 10 ;
    Commit;
    Alter Table Table_Name Logging;
    End;
      

  4.   

    Begin
    Alter Table Table_Name Nologging
    Select id2  From Table_Name For Update;
    Update Table_Name Set Id2 = Id + 10 Where 1 = 1;
    Commit;
    Alter Table Table_Name Logging;
    End;