由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 说说俺们这以前一个老印的code,滥用CTE
相关主题
最近写了不少SQL script,请大牛评价下属于什么水平fact table 和 dimension table 的区别到底是什么?
请问那种很复杂的sql语句,有什么套路吗?list duplicators in one table
其实我发现了CODE的写得好不好help about SQL for ACCESS
怎么reference temp table的columnOracle下如何能得到所有table的名字?
公司有一个SSAS Cube是MOLAP。速度满,一直崩溃Remove duplicate from oracle table
请教database developer职业发展方向同事被FIRE掉了
best practices for sql developer我经常问的几道SQL SERVER DBA的面试题,图省事不问编程
问个sql问题15万收入怎么样
相关话题的讨论汇总
话题: cte话题: sql话题: dba话题: table话题: temp
进入Database版参与讨论
1 (共1页)
y****w
发帖数: 3747
1
滥用CTE,把整个过程逻辑都一层层放到cte里面了。连最普通的源表上project逻辑都要
用一层cte包起来。我数了数大概一个sql语句用了30-40层。
那一块不重要,性能好十倍差十倍也没关系,边边角角,不然肯定打回去让他重写了。
我都怀疑是不是老印们都一个培训班毕业的,好几个都这个风格。估计都是当初被填鸭
了,面试的时候可以振振有词的讲:1)精通cte 2) 1-sql solution. 听起来还是蛮牛
的。
B*****g
发帖数: 34098
2
以前传说只用sql的是大牛,所以cet套sub,sub再套cte,性能也不见的就好。

【在 y****w 的大作中提到】
: 滥用CTE,把整个过程逻辑都一层层放到cte里面了。连最普通的源表上project逻辑都要
: 用一层cte包起来。我数了数大概一个sql语句用了30-40层。
: 那一块不重要,性能好十倍差十倍也没关系,边边角角,不然肯定打回去让他重写了。
: 我都怀疑是不是老印们都一个培训班毕业的,好几个都这个风格。估计都是当初被填鸭
: 了,面试的时候可以振振有词的讲:1)精通cte 2) 1-sql solution. 听起来还是蛮牛
: 的。

y****w
发帖数: 3747
3
cte套多了性能肯定不好。现在的dbms大多不够聪明能够自动给join列加个索引再跑。有时候也怀疑这些做引擎的家伙们缺少field经验。
我是比较喜欢pure sql solution的,能用sql sp就用sql sp,不够用了再去借用java甚至c一下。不过这玩意儿也严重和应用性质有关系,自产自用也就算了,要是deliver给客户呢,怎么保护ip就是一个大问题,比如你辛辛苦苦搞一套db监控软件,不注意保护的话人家好点的dba轻轻松松把你的sql都给抠出来了。
我也只是客串过半年的db developer,经验有限的很,还是在旁边动嘴多一些。 beijing你多讲讲。

【在 B*****g 的大作中提到】
: 以前传说只用sql的是大牛,所以cet套sub,sub再套cte,性能也不见的就好。
s**********0
发帖数: 266
4
我觉得CTE最大的好处是你可以用recursive CTE。 一般来说如果有一段code要重复用
的话我都会直接建一个View。 (或者丢到table variable或temp table 里去)
y****w
发帖数: 3747
5
re recursive. 我说起cte来一般就默认recursive。。。 刚才beijing在另一个帖子里说的同一个subquery在一个sql里面被引用多次,那也是个常见用法。
建view,很多developer/application不会有权限的。如果在很多地方用到,那是个好的view candidate. 如果只是在一个地方用多次,dba大概不会太高兴手下的schema又复杂了一点。

【在 s**********0 的大作中提到】
: 我觉得CTE最大的好处是你可以用recursive CTE。 一般来说如果有一段code要重复用
: 的话我都会直接建一个View。 (或者丢到table variable或temp table 里去)

B*****g
发帖数: 34098
6
nod,建个type DBA都要jjww一回。而且view不行呀,每次sql要是略有不同得搞多少
view呀

里说的同一个subquery在一个sql里面被引用多次,那也是个常见用法。
的view candidate. 如果只是在一个地方用多次,dba大概不会太高兴手下的schema又
复杂了一点。

【在 y****w 的大作中提到】
: re recursive. 我说起cte来一般就默认recursive。。。 刚才beijing在另一个帖子里说的同一个subquery在一个sql里面被引用多次,那也是个常见用法。
: 建view,很多developer/application不会有权限的。如果在很多地方用到,那是个好的view candidate. 如果只是在一个地方用多次,dba大概不会太高兴手下的schema又复杂了一点。

y****w
发帖数: 3747
7
[inline] table function is another option.

而且view不行呀,每次sql要是略有不同得搞多少

【在 B*****g 的大作中提到】
: nod,建个type DBA都要jjww一回。而且view不行呀,每次sql要是略有不同得搞多少
: view呀
:
: 里说的同一个subquery在一个sql里面被引用多次,那也是个常见用法。
: 的view candidate. 如果只是在一个地方用多次,dba大概不会太高兴手下的schema又
: 复杂了一点。

g***l
发帖数: 18555
8
CTE只是用来替代复杂的SUBQUERY,临时放在内存里,用完就扔掉,如果要反复用的话
,还是建个TEMP TABLE
B*****g
发帖数: 34098
9
这里temp table和view比有什么优势?如果sql结果变化temp table不能显示变化吧。

【在 g***l 的大作中提到】
: CTE只是用来替代复杂的SUBQUERY,临时放在内存里,用完就扔掉,如果要反复用的话
: ,还是建个TEMP TABLE

g***l
发帖数: 18555
10
VIEW还是要套在TABLE上吧,即使NO LOCK,还是对TABLE有影响的,弄个TEMP TABLE自
己玩去吧,怎么添加啊更新,不管咱的事,控制数据量就可以了。

【在 B*****g 的大作中提到】
: 这里temp table和view比有什么优势?如果sql结果变化temp table不能显示变化吧。
相关主题
请教database developer职业发展方向fact table 和 dimension table 的区别到底是什么?
best practices for sql developerlist duplicators in one table
问个sql问题help about SQL for ACCESS
进入Database版参与讨论
y****w
发帖数: 3747
11
temp笨重不灵活,但是,可以加索引。如果后继操作时间长,还可以减少lock-wait(even nolock/ur)和死锁的机会。

【在 B*****g 的大作中提到】
: 这里temp table和view比有什么优势?如果sql结果变化temp table不能显示变化吧。
y****w
发帖数: 3747
12
作为subquery替代功能,我倾向于相信CTE会抑制optimizer的改写(xx to some JOIN,
etc.)逻辑,强制生成中间临时表。没验证过。
另外,CTE降低了复杂多重子查询的书写难度,更自然,因为可以更多thinking in
prodedure than in set.

【在 B*****g 的大作中提到】
: 这里temp table和view比有什么优势?如果sql结果变化temp table不能显示变化吧。
g***l
发帖数: 18555
13
CTE就是扔在内存的TEMP TABLE,而且是只读的,没有INDEX一样PEFORM很差,关键还是
JOIN的时候要有INDEX,逻辑要清楚,不产生不必要的中间数据,如果SP中间太复杂,
CTE太多,就要考虑用SUMMARY TABLE,提前用JOB ROLLUP,否则RUN一下要几十分钟,
根本没法用。
y****w
发帖数: 3747
14
如上面有兄弟说的,cte最重要的用途还是在recursive。如果只是一个扩展易用版的
subquery,就没太大必要了。这也是为什么说oracle以前的cte也就是应付差事,聊胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
btw,我相信即使在oracle中,recursive CTE也会取代connect by的地位; 新应用的话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best practice还是大家都用的cbo。

【在 g***l 的大作中提到】
: CTE就是扔在内存的TEMP TABLE,而且是只读的,没有INDEX一样PEFORM很差,关键还是
: JOIN的时候要有INDEX,逻辑要清楚,不产生不必要的中间数据,如果SP中间太复杂,
: CTE太多,就要考虑用SUMMARY TABLE,提前用JOB ROLLUP,否则RUN一下要几十分钟,
: 根本没法用。

g***l
发帖数: 18555
15
用什么差别不是太大,关键还是逻辑了,碰上个脑子不清楚就为了弄结果赚点钱了事的
,就惨了,你就是把FLOW CHART给他画好,编出来的也还是五花八门。
B*****g
发帖数: 34098
16
别说干掉connect by,10年后能普及12g就不错了。10年后大家还在care怎么写sql?嘿
嘿。就像俺们头说的,我最多就care12g,再往后我退休了。另外,你确定10年后还
用rd吗?

胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best
practice还是大家都用的cbo。

【在 y****w 的大作中提到】
: 如上面有兄弟说的,cte最重要的用途还是在recursive。如果只是一个扩展易用版的
: subquery,就没太大必要了。这也是为什么说oracle以前的cte也就是应付差事,聊胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
: btw,我相信即使在oracle中,recursive CTE也会取代connect by的地位; 新应用的话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best practice还是大家都用的cbo。

g***l
发帖数: 18555
17
嗯,还是不要强调用什么更好,没有最好只有更好,微软也弄出个什么ENTITY铺在
TABLE上,从NET里读写都很快,也利于开发,估计将来也不用SQL了,谁知道呢。

【在 B*****g 的大作中提到】
: 别说干掉connect by,10年后能普及12g就不错了。10年后大家还在care怎么写sql?嘿
: 嘿。就像俺们头说的,我最多就care12g,再往后我退休了。另外,你确定10年后还
: 用rd吗?
:
: 胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
: 话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best
: practice还是大家都用的cbo。

y****w
发帖数: 3747
18
你们头儿就是丫死后哪管洪水滔天的角色,呵呵。我要是cto就把丫开掉。

【在 B*****g 的大作中提到】
: 别说干掉connect by,10年后能普及12g就不错了。10年后大家还在care怎么写sql?嘿
: 嘿。就像俺们头说的,我最多就care12g,再往后我退休了。另外,你确定10年后还
: 用rd吗?
:
: 胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
: 话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best
: practice还是大家都用的cbo。

y****w
发帖数: 3747
19
这个帖子好像说的是具体而微的东西,干嘛扯那么不可预测的将来?呵呵。
好比给20年前的c programmer讲别玩c了研究啥算法优化啥内存啊,以后用java了,内
存便宜的很。。。。。
路还是要一步一步走到。

【在 B*****g 的大作中提到】
: 别说干掉connect by,10年后能普及12g就不错了。10年后大家还在care怎么写sql?嘿
: 嘿。就像俺们头说的,我最多就care12g,再往后我退休了。另外,你确定10年后还
: 用rd吗?
:
: 胜于无了。 多数情况下,temp table太重量级,不方便,好比拿c去拼java了。
: 话能少用就少用,connect by早晚deprecated。就好比rbo特色了太久,回头best
: practice还是大家都用的cbo。

B*****g
发帖数: 34098
20
俺们公司的CTO最恨搞新技术革新的,hoho

?嘿
后还

【在 y****w 的大作中提到】
: 你们头儿就是丫死后哪管洪水滔天的角色,呵呵。我要是cto就把丫开掉。
相关主题
Oracle下如何能得到所有table的名字?我经常问的几道SQL SERVER DBA的面试题,图省事不问编程
Remove duplicate from oracle table15万收入怎么样
同事被FIRE掉了关于学习数据库我也说几句
进入Database版参与讨论
n*w
发帖数: 3393
21
sql server 上的非递归cte应该和subquery更接近吧。如果不是等同。
和temp table应该完全不同。
b****t
发帖数: 112
22
SQL Server 可以对 sp 加密,但好像也可以破解。
http://searchsqlserver.techtarget.com/tip/Decrypt-encrypted-sto

deliver给客户呢,怎么保护ip就是一个大问题,比如你辛辛苦苦搞一套db监控软件,
不注意保护的话人家好点的dba轻轻松松把你的sql都给抠出来了。

【在 y****w 的大作中提到】
: 这个帖子好像说的是具体而微的东西,干嘛扯那么不可预测的将来?呵呵。
: 好比给20年前的c programmer讲别玩c了研究啥算法优化啥内存啊,以后用java了,内
: 存便宜的很。。。。。
: 路还是要一步一步走到。

y****w
发帖数: 3747
23
sql server的sp有encyption选项。oracle好像可以用什么wrapper. 静态的加密都有破解的可能。
再说总是有办法收集动态运行的sql的(即使是静态sql),这些放到库里去,就不保险。

【在 b****t 的大作中提到】
: SQL Server 可以对 sp 加密,但好像也可以破解。
: http://searchsqlserver.techtarget.com/tip/Decrypt-encrypted-sto
:
: deliver给客户呢,怎么保护ip就是一个大问题,比如你辛辛苦苦搞一套db监控软件,
: 不注意保护的话人家好点的dba轻轻松松把你的sql都给抠出来了。

a9
发帖数: 21638
24
直接用c写external sp也行吧。

【在 b****t 的大作中提到】
: SQL Server 可以对 sp 加密,但好像也可以破解。
: http://searchsqlserver.techtarget.com/tip/Decrypt-encrypted-sto
:
: deliver给客户呢,怎么保护ip就是一个大问题,比如你辛辛苦苦搞一套db监控软件,
: 不注意保护的话人家好点的dba轻轻松松把你的sql都给抠出来了。

Z*****l
发帖数: 14069
25
cte是啥?就是with带一坨那种?

【在 y****w 的大作中提到】
: 滥用CTE,把整个过程逻辑都一层层放到cte里面了。连最普通的源表上project逻辑都要
: 用一层cte包起来。我数了数大概一个sql语句用了30-40层。
: 那一块不重要,性能好十倍差十倍也没关系,边边角角,不然肯定打回去让他重写了。
: 我都怀疑是不是老印们都一个培训班毕业的,好几个都这个风格。估计都是当初被填鸭
: 了,面试的时候可以振振有词的讲:1)精通cte 2) 1-sql solution. 听起来还是蛮牛
: 的。

B*****g
发帖数: 34098
26
did not try yet
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Finnig

破解的可能。
险。

【在 y****w 的大作中提到】
: sql server的sp有encyption选项。oracle好像可以用什么wrapper. 静态的加密都有破解的可能。
: 再说总是有办法收集动态运行的sql的(即使是静态sql),这些放到库里去,就不保险。

B*****g
发帖数: 34098
27
c能加密吗?

【在 a9 的大作中提到】
: 直接用c写external sp也行吧。
B*****g
发帖数: 34098
28


【在 Z*****l 的大作中提到】
: cte是啥?就是with带一坨那种?
y****w
发帖数: 3747
29
在编程语言中对核心逻辑加密,数据方面只取源数据,核心逻辑得放到自己这边来,不
能扔到数据库去跑。

【在 B*****g 的大作中提到】
: c能加密吗?
B*****g
发帖数: 34098
30
你给客户做啥都得给人家。

【在 y****w 的大作中提到】
: 在编程语言中对核心逻辑加密,数据方面只取源数据,核心逻辑得放到自己这边来,不
: 能扔到数据库去跑。

相关主题
求助:工科博士背景,年纪较大,还能转DBA方向吗?请问那种很复杂的sql语句,有什么套路吗?
北京等高手,请帮忙tone一下这个query,周五才被DBA嘲笑过 :-(其实我发现了CODE的写得好不好
最近写了不少SQL script,请大牛评价下属于什么水平怎么reference temp table的column
进入Database版参与讨论
y****w
发帖数: 3747
31
ok,suppose what you're working at is Quest Spotlight.

【在 B*****g 的大作中提到】
: 你给客户做啥都得给人家。
B*****g
发帖数: 34098
32
That is why "We should not provide software, we should provide service!"
That is how oracle/ibm successed but sun failed.

【在 y****w 的大作中提到】
: ok,suppose what you're working at is Quest Spotlight.
y****w
发帖数: 3747
33
open source出有用的东西,容易出名,但容易被copy,回头自己活活饿死,看着
别人大口吃肉自己连口汤都没有。尤其是核心value容易被copy的冬冬。

【在 B*****g 的大作中提到】
: That is why "We should not provide software, we should provide service!"
: That is how oracle/ibm successed but sun failed.

s**********0
发帖数: 266
34
SQL server 里不是可以写SQLCLR吗?
我现在在一个处理大量信用卡号码的公司里(PCI compliance)工作。DBA不能写code
只能deploy。 一般我都是写一些SQLCLR的 stored procedure, deploy的时候就给DBA
2个assembly dll, 叫他们先加到sql server,再从dll上建 stored procedure. 这
样DBA想看我们的encrypt/decrypt的逻辑也看不到。 一般来说DBA只管理和rotate sql
server 上的 certificate 和 symmetric keys, developer掌握着加密和解密的原理。

破解的可能。
险。

【在 y****w 的大作中提到】
: sql server的sp有encyption选项。oracle好像可以用什么wrapper. 静态的加密都有破解的可能。
: 再说总是有办法收集动态运行的sql的(即使是静态sql),这些放到库里去,就不保险。

a9
发帖数: 21638
35
clr解密也忒容易了。

code
DBA
sql
理。

【在 s**********0 的大作中提到】
: SQL server 里不是可以写SQLCLR吗?
: 我现在在一个处理大量信用卡号码的公司里(PCI compliance)工作。DBA不能写code
: 只能deploy。 一般我都是写一些SQLCLR的 stored procedure, deploy的时候就给DBA
: 2个assembly dll, 叫他们先加到sql server,再从dll上建 stored procedure. 这
: 样DBA想看我们的encrypt/decrypt的逻辑也看不到。 一般来说DBA只管理和rotate sql
: server 上的 certificate 和 symmetric keys, developer掌握着加密和解密的原理。
:
: 破解的可能。
: 险。

B*****g
发帖数: 34098
36
点net写的dll解密很难吗?赫赫

code
DBA
sql
理。

【在 s**********0 的大作中提到】
: SQL server 里不是可以写SQLCLR吗?
: 我现在在一个处理大量信用卡号码的公司里(PCI compliance)工作。DBA不能写code
: 只能deploy。 一般我都是写一些SQLCLR的 stored procedure, deploy的时候就给DBA
: 2个assembly dll, 叫他们先加到sql server,再从dll上建 stored procedure. 这
: 样DBA想看我们的encrypt/decrypt的逻辑也看不到。 一般来说DBA只管理和rotate sql
: server 上的 certificate 和 symmetric keys, developer掌握着加密和解密的原理。
:
: 破解的可能。
: 险。

s**********0
发帖数: 266
37
是不难,但估计一般的DBA也没兴趣去破解。总比直接给DBA create procedure XXX
with encryption 的sql script要安全吧。
其实最后建完的stored procedure, DBA和developer大家都有execute的rights;要偷
些信用卡号码对大家来说都不难。 所以我也不知道公司(和PCI的要求)为什么要这样
搞。。。 可能也就是防防一般人进入network把整个database backup file给偷了?

【在 B*****g 的大作中提到】
: 点net写的dll解密很难吗?赫赫
:
: code
: DBA
: sql
: 理。

l******t
发帖数: 660
38
知道解谜的原理有什么用, 那些加密的算法都是公开的, 但是你知道算法也解不了啊

【在 a9 的大作中提到】
: clr解密也忒容易了。
:
: code
: DBA
: sql
: 理。

y****w
发帖数: 3747
39
一般的dba可能没兴趣,但假如我是他的竞争对手那就有兴趣了。

了?

【在 s**********0 的大作中提到】
: 是不难,但估计一般的DBA也没兴趣去破解。总比直接给DBA create procedure XXX
: with encryption 的sql script要安全吧。
: 其实最后建完的stored procedure, DBA和developer大家都有execute的rights;要偷
: 些信用卡号码对大家来说都不难。 所以我也不知道公司(和PCI的要求)为什么要这样
: 搞。。。 可能也就是防防一般人进入network把整个database backup file给偷了?

B*****g
发帖数: 34098
40
你这个超过architect level了

【在 y****w 的大作中提到】
: 一般的dba可能没兴趣,但假如我是他的竞争对手那就有兴趣了。
:
: 了?

相关主题
怎么reference temp table的columnbest practices for sql developer
公司有一个SSAS Cube是MOLAP。速度满,一直崩溃问个sql问题
请教database developer职业发展方向fact table 和 dimension table 的区别到底是什么?
进入Database版参与讨论
y****w
发帖数: 3747
41
产品的architect呢。 than project architect.

【在 B*****g 的大作中提到】
: 你这个超过architect level了
s**********0
发帖数: 266
42
说到解密我倒想起一件事,我们单位有一个DBA差点被fire。 他在一个sql server上竟然有差不多一年没有backup 我们用来加密的 certificates 和 symmetric keys (每过一段时间要重建的)
查出来之后被骂的狗血喷头,还好server没出事,不然的话我们最重要的数据全都变
成了一堆garbage data. 公司历史上也出过一次这样的事,有一个新的project
deploy to production后我们发觉谁都不能还原OLTP server上加了密的数据 (一帮人大眼瞪小眼,谁也没办法)。 还好2天不到就发现了, 结果只能去重听所有的recording,一个一个再把所有的数据manually update回去。 噩梦啊。。
y****w
发帖数: 3747
43
dba也是高风险职业,有两起血案,圈子里挂上号就不好过了,磕磕。

2

【在 s**********0 的大作中提到】
: 说到解密我倒想起一件事,我们单位有一个DBA差点被fire。 他在一个sql server上竟然有差不多一年没有backup 我们用来加密的 certificates 和 symmetric keys (每过一段时间要重建的)
: 查出来之后被骂的狗血喷头,还好server没出事,不然的话我们最重要的数据全都变
: 成了一堆garbage data. 公司历史上也出过一次这样的事,有一个新的project
: deploy to production后我们发觉谁都不能还原OLTP server上加了密的数据 (一帮人大眼瞪小眼,谁也没办法)。 还好2天不到就发现了, 结果只能去重听所有的recording,一个一个再把所有的数据manually update回去。 噩梦啊。。

b****t
发帖数: 112
44
Sql Server 不是不推荐用SQLCLR吗?
http://www.sswug.org/articles/viewarticle.aspx?id=22480

code
DBA
sql
理。

【在 s**********0 的大作中提到】
: SQL server 里不是可以写SQLCLR吗?
: 我现在在一个处理大量信用卡号码的公司里(PCI compliance)工作。DBA不能写code
: 只能deploy。 一般我都是写一些SQLCLR的 stored procedure, deploy的时候就给DBA
: 2个assembly dll, 叫他们先加到sql server,再从dll上建 stored procedure. 这
: 样DBA想看我们的encrypt/decrypt的逻辑也看不到。 一般来说DBA只管理和rotate sql
: server 上的 certificate 和 symmetric keys, developer掌握着加密和解密的原理。
:
: 破解的可能。
: 险。

n*w
发帖数: 3393
a9
发帖数: 21638
46
也不能说不推荐吧。能不用就不用就是了。
ms也是花了力气做上去的,怎么就说不推荐呢。



【在 b****t 的大作中提到】
: Sql Server 不是不推荐用SQLCLR吗?
: http://www.sswug.org/articles/viewarticle.aspx?id=22480
:
: code
: DBA
: sql
: 理。

1 (共1页)
进入Database版参与讨论
相关主题
15万收入怎么样公司有一个SSAS Cube是MOLAP。速度满,一直崩溃
关于学习数据库我也说几句请教database developer职业发展方向
求助:工科博士背景,年纪较大,还能转DBA方向吗?best practices for sql developer
北京等高手,请帮忙tone一下这个query,周五才被DBA嘲笑过 :-(问个sql问题
最近写了不少SQL script,请大牛评价下属于什么水平fact table 和 dimension table 的区别到底是什么?
请问那种很复杂的sql语句,有什么套路吗?list duplicators in one table
其实我发现了CODE的写得好不好help about SQL for ACCESS
怎么reference temp table的columnOracle下如何能得到所有table的名字?
相关话题的讨论汇总
话题: cte话题: sql话题: dba话题: table话题: temp