i****a 发帖数: 36252 | 1 写 Stored Procedure 批量处理数据
1.数数有多少记录需要被处理
select @n = count(*) from tableA where condition = xyz
2.用个functionGetNextRecord, 每次返回一个 ID
select top 1 ID from tableA where condition = xyz order by ID
3.写 WHILE loop
SET @count = 1
SET @NextRecord = functionGetNextRecord()
WHILE (@NextRecord IS NOT NULL) and (@count<=@n) BEGIN
blah blah blah
END
如果我写:
select ID
INTO #temptable
from tableA where condition = xyz
然后用#temptable做工就可以, 一次读表可以做到的硬是作成成千千万万次的读
另外不知道是不是老印的创作. 查 account balance, 没有一个 current balance 的
记录, 现有代码每次都做要 select sum(abc) from TableB with (nolock) where
accountNumber = 123 就算了. 做会计的需要精度, 还nolock... 也不怕 dirty read.
.. |
a******g 发帖数: 725 | |
m*****k 发帖数: 731 | 3 你一次populate #temptable 后咋个用它?
也要循环多次读还是上cursor?
你测了你的solution能快多少么?
如果有显著提高,那就值得refactor,否者费力不讨好还得罪人哦。 |
T********e 发帖数: 8631 | 4 这个差远了。我们公司的vendor,号称提供web service that unifies all company's
product lines. 结果打开一看,里面只有一个method,Magic(Para1, Para2, ...
Para8), returns dataset
再查一下,Magic calls one stored procedure, 里面有一千多行if,原来para1是其
它stored procedure name
是不是烙印干的不知道。 |
y****o 发帖数: 666 | 5 发完牢骚乖乖去烙印科长的办公室做weekly report |
f****b 发帖数: 2410 | |
s***y 发帖数: 12419 | |
C*********r 发帖数: 2671 | |
m*********a 发帖数: 3299 | 9 如果不影响运行,谁会care这种回有18种写法的细节
做好document,做好ppt先,这种优化的活没有人care |
B**********2 发帖数: 923 | |
|
|
h**********a 发帖数: 562 | 11 男老印同最
【在 C*********r 的大作中提到】 : 女老印最贱最傻逼。。。
|
i****a 发帖数: 36252 | 12 问题是现在有很奇怪的会计 bug 与这些代码有关. 我需要迹察并理解这些垃圾逻辑流
啊. 否则谁没事仔细看别人代码
如果会计系统计算不能平衡是因为 dirty read, 那么大量的有关 query 就要不用 no
lock. 我怀疑这类型垃圾逻辑不使用 no lock 会造成严重 blocking 问题. 估计所以
之前的程序员几乎所有的SQL一率加 no lock, 然后说 improved system performance
by 200%! |
tj 发帖数: 957 | |
i****a 发帖数: 36252 | 14 WHILE loop 里面 update 后 xyz 条件不同了
【在 tj 的大作中提到】 : 这个难道不是每回返回同一个id么?
|
m*********a 发帖数: 3299 | 15 老板没有教你优化code,教你改正错误的code
那你就把错误的code找出来,改了
你优化code,难道不会出现新的bugs,如果这样
你可能觉得自己很牛逼
在别人看来你很傻很天真
多干活,没有credit,还要得罪人的活不要干
要干也要争取机会做ppt,向上级客户presentation ppt的机会
把你的documnet 和ptt搞的漂亮一点
如果你不做这些,生经理,director, VP 和 CEO的还是写你说的垃圾code 的老印
no
performance
【在 i****a 的大作中提到】 : 问题是现在有很奇怪的会计 bug 与这些代码有关. 我需要迹察并理解这些垃圾逻辑流 : 啊. 否则谁没事仔细看别人代码 : 如果会计系统计算不能平衡是因为 dirty read, 那么大量的有关 query 就要不用 no : lock. 我怀疑这类型垃圾逻辑不使用 no lock 会造成严重 blocking 问题. 估计所以 : 之前的程序员几乎所有的SQL一率加 no lock, 然后说 improved system performance : by 200%!
|
s**********o 发帖数: 14359 | 16 嗯,水平不行的就瞎写,我都是告诉他们怎么写,最后还写错了
还不如自己个搞 |
l******9 发帖数: 5 | 17 成天被这帮sb搞的头老大,关键有的告诉他们怎么改都不会改。dba这干种重体力活很
郁闷 |
i****a 发帖数: 36252 | 18 继续跟以前老印的代码战斗
SELECT T.shortdesc AS Manufacturer
, T.factory_id AS ManufacturerId
, A.shortdesc AS Supplier
, A.association_id AS SupplierId
, T.supplier_id AS WholesalerId
factory = manufacturer
association = supplier
supplier = wholesaler
wtf... |
i****a 发帖数: 36252 | 19 写 Stored Procedure 批量处理数据
1.数数有多少记录需要被处理
select @n = count(*) from tableA where condition = xyz
2.用个functionGetNextRecord, 每次返回一个 ID
select top 1 ID from tableA where condition = xyz order by ID
3.写 WHILE loop
SET @count = 1
SET @NextRecord = functionGetNextRecord()
WHILE (@NextRecord IS NOT NULL) and (@count<=@n) BEGIN
blah blah blah
END
如果我写:
select ID
INTO #temptable
from tableA where condition = xyz
然后用#temptable做工就可以, 一次读表可以做到的硬是作成成千千万万次的读
另外不知道是不是老印的创作. 查 account balance, 没有一个 current balance 的
记录, 现有代码每次都做要 select sum(abc) from TableB with (nolock) where
accountNumber = 123 就算了. 做会计的需要精度, 还nolock... 也不怕 dirty read.
.. |
a******g 发帖数: 725 | |
|
|
m*****k 发帖数: 731 | 21 你一次populate #temptable 后咋个用它?
也要循环多次读还是上cursor?
你测了你的solution能快多少么?
如果有显著提高,那就值得refactor,否者费力不讨好还得罪人哦。 |
T********e 发帖数: 8631 | 22 这个差远了。我们公司的vendor,号称提供web service that unifies all company's
product lines. 结果打开一看,里面只有一个method,Magic(Para1, Para2, ...
Para8), returns dataset
再查一下,Magic calls one stored procedure, 里面有一千多行if,原来para1是其
它stored procedure name
是不是烙印干的不知道。 |
y****o 发帖数: 666 | 23 发完牢骚乖乖去烙印科长的办公室做weekly report |
f****b 发帖数: 2410 | |
s***y 发帖数: 12419 | |
C*********r 发帖数: 2671 | |
m*********a 发帖数: 3299 | 27 如果不影响运行,谁会care这种回有18种写法的细节
做好document,做好ppt先,这种优化的活没有人care |
B**********2 发帖数: 923 | |
h**********a 发帖数: 562 | 29 男老印同最
【在 C*********r 的大作中提到】 : 女老印最贱最傻逼。。。
|
i****a 发帖数: 36252 | 30 问题是现在有很奇怪的会计 bug 与这些代码有关. 我需要迹察并理解这些垃圾逻辑流
啊. 否则谁没事仔细看别人代码
如果会计系统计算不能平衡是因为 dirty read, 那么大量的有关 query 就要不用 no
lock. 我怀疑这类型垃圾逻辑不使用 no lock 会造成严重 blocking 问题. 估计所以
之前的程序员几乎所有的SQL一率加 no lock, 然后说 improved system performance
by 200%! |
|
|
tj 发帖数: 957 | |
i****a 发帖数: 36252 | 32 WHILE loop 里面 update 后 xyz 条件不同了
【在 tj 的大作中提到】 : 这个难道不是每回返回同一个id么?
|
m*********a 发帖数: 3299 | 33 老板没有教你优化code,教你改正错误的code
那你就把错误的code找出来,改了
你优化code,难道不会出现新的bugs,如果这样
你可能觉得自己很牛逼
在别人看来你很傻很天真
多干活,没有credit,还要得罪人的活不要干
要干也要争取机会做ppt,向上级客户presentation ppt的机会
把你的documnet 和ptt搞的漂亮一点
如果你不做这些,生经理,director, VP 和 CEO的还是写你说的垃圾code 的老印
no
performance
【在 i****a 的大作中提到】 : 问题是现在有很奇怪的会计 bug 与这些代码有关. 我需要迹察并理解这些垃圾逻辑流 : 啊. 否则谁没事仔细看别人代码 : 如果会计系统计算不能平衡是因为 dirty read, 那么大量的有关 query 就要不用 no : lock. 我怀疑这类型垃圾逻辑不使用 no lock 会造成严重 blocking 问题. 估计所以 : 之前的程序员几乎所有的SQL一率加 no lock, 然后说 improved system performance : by 200%!
|
s**********o 发帖数: 14359 | 34 嗯,水平不行的就瞎写,我都是告诉他们怎么写,最后还写错了
还不如自己个搞 |
l******9 发帖数: 5 | 35 成天被这帮sb搞的头老大,关键有的告诉他们怎么改都不会改。dba这干种重体力活很
郁闷 |
i****a 发帖数: 36252 | 36 继续跟以前老印的代码战斗
SELECT T.shortdesc AS Manufacturer
, T.factory_id AS ManufacturerId
, A.shortdesc AS Supplier
, A.association_id AS SupplierId
, T.supplier_id AS WholesalerId
factory = manufacturer
association = supplier
supplier = wholesaler
wtf... |
c***c 发帖数: 6234 | 37 问题是有些code'是不能改正错误的。必须refactor。否则以后错误会无法弥补。
我用了2年时间才convince大老板,必须重写code,否则这次要2周改错,下次还需要两
周改错,而且会有一天无法修改,全线崩溃。
我们部门小,我每次多是谦虚,表示自己不行,需要对方改,我自己就是重写。哪怕下
班后继续干,要让老板看见,我花的时间不比对方多。两年来,我的code没有出错,而
且满足不断增加的要求,只需修改很少就可以了。对方code,每次加要求都是大改,QA
错误不断。现在老板终于相信我了。
还是语言问题。
【在 m*********a 的大作中提到】 : 老板没有教你优化code,教你改正错误的code : 那你就把错误的code找出来,改了 : 你优化code,难道不会出现新的bugs,如果这样 : 你可能觉得自己很牛逼 : 在别人看来你很傻很天真 : 多干活,没有credit,还要得罪人的活不要干 : 要干也要争取机会做ppt,向上级客户presentation ppt的机会 : 把你的documnet 和ptt搞的漂亮一点 : 如果你不做这些,生经理,director, VP 和 CEO的还是写你说的垃圾code 的老印 :
|
c***c 发帖数: 6234 | 38 你还是年轻,现在的烙印确实差。10年前的烙印水平可不低。
我所有DB工作经验都是烙印教的。现在我们部门找java程序员,来的全是烙印,有的连
outer join都不会。而且逻辑混乱,写code
if a=true and b= true then
....
else if c=false and (a or b)= true then
end if
看了code都不知道丫要干嘛。把他fire了,让我改,我还得找用户问,到底要干什么。
对方让我读document和requirement。改个这么简单逻辑问题,要用1周以上。
心里直骂娘
【在 i****a 的大作中提到】 : 写 Stored Procedure 批量处理数据 : 1.数数有多少记录需要被处理 : select @n = count(*) from tableA where condition = xyz : 2.用个functionGetNextRecord, 每次返回一个 ID : select top 1 ID from tableA where condition = xyz order by ID : 3.写 WHILE loop : SET @count = 1 : SET @NextRecord = functionGetNextRecord() : WHILE (@NextRecord IS NOT NULL) and (@count<=@n) BEGIN : blah blah blah
|
i****a 发帖数: 36252 | 39 每天trace, fix, test 这样的代码, 真的累... 在认真考虑辞掉这工作 |
q*********8 发帖数: 188 | |
|
|
i****a 发帖数: 36252 | 41 圣诞节前有猎头找我. 正好心烦就去面试. 一面二面三面都非常顺利. 但offer有点鸡
肋, 没跳. 新年后再找
【在 q*********8 的大作中提到】 : 顶!
|
i****a 发帖数: 36252 | 42 继续吐槽,也给大家一些笑料谈资
第一贴说的没有客户结余,每次都要现场演算。用不同的方式看客户帐本有不同算法,
发现了至少三种算法,其中一种是用cursor一条一条记录加加减减出结果。而三种算法
有些情况会出三种不同结果。。。刚来上班就花了一个月修这bug.
[发表自未名空间手机版 - m.mitbbs.com] |
i****a 发帖数: 36252 | 43 三个主要数据库服务器,相互传数据不用replication,而是把要传的数据写表,再用 .
net 自己写 windows service 写到另外服务器上。但太慢了怎么办? run multiple
copies of this windows service! 然后偶尔发生 out of sync insert,导致之后的
程序出错
[发表自未名空间手机版 - m.mitbbs.com] |
i****a 发帖数: 36252 | 44 Trigger happy.
有500多个 trigger,看到很多都有复杂business logic 在里面。
而好多SP 和 Fn 啥都不干,就一行,只把 parameters 完完本本的传给另一个 SP。。。
[发表自未名空间手机版 - m.mitbbs.com] |
i****a 发帖数: 36252 | 45 什么 naming standard, coding standard, db normalization 都没有。product_id
ProductId, ID, SKU, ItemID 等等都有可能是同一数据。。。
[发表自未名空间手机版 - m.mitbbs.com] |
s**********o 发帖数: 14359 | 46 这个还好吧,没见过差的就不知道啥是好的,很多都是ARCHITECT本身就有问题
除了专门的软件公司,多数公司不愿意花钱,请一两个PROGRAMMER糊弄一下,
结果就五花八门什么样的SOLUTION都有,就算数字对上了,也不管PERFORMANCE
给钱都是按花了多长时间编程序,没人会因为效率高多给钱的,有良心的程序员
会质问一下为什么这样不是那样,为了钱的根本就不管,做完自己那点活就算完了。 |
q*********8 发帖数: 188 | |
s**********o 发帖数: 14359 | 48 不是喜欢绕圈子,是不喜欢动脑子,从A->C,只需要从A->B->C,很简单的问题
他们没履清楚的话,就变成A->B->D->E+F+G->H->C,中间绕了弯路,还产生了
些没用的东西。
【在 q*********8 的大作中提到】 : 烙印喜欢绕圈子。
|
b*****x 发帖数: 3786 | 49 还是年轻, 工作时间不长。 这种事多的是, 早没脾气了。
【在 i****a 的大作中提到】 : 写 Stored Procedure 批量处理数据 : 1.数数有多少记录需要被处理 : select @n = count(*) from tableA where condition = xyz : 2.用个functionGetNextRecord, 每次返回一个 ID : select top 1 ID from tableA where condition = xyz order by ID : 3.写 WHILE loop : SET @count = 1 : SET @NextRecord = functionGetNextRecord() : WHILE (@NextRecord IS NOT NULL) and (@count<=@n) BEGIN : blah blah blah
|
s**********o 发帖数: 14359 | 50 是的,发现问题,不要急于解决问题,再看看,还有什么问题?
然后给各级领导解释,时间主要花在这部分,看看领导有没有兴趣
没兴趣MOVE ON,有兴趣,做ESTIMATE,要多少时间金钱才能修好
数字都是虚报的,DOC要做好,这样就保证三五个月的有活干。要改
SOLUTION需要的钱就更多了,上面不愿意掏钱,就装作不存在,MOVE ON |