太阳城博彩平台评价排名_禁用 SQL 游标,告诉你外面听不到的原因
发布日期:2023-10-30 06:29 点击次数:149
[[433798]]
皇冠客服飞机:@seo3687
文末本文转载自微信公众号「关联SQL」,作家Lenis。转载本文请关联关联SQL公众号。
周六早晨,东方刚刚露白。
L 早早来到办公室,佩带上最爱的热焦玛。今天会是一场死战,推断了两个月的上线产物,今天发布。他需要极其敏捷的脑子。另外,只须 L 还在喝着咖啡,证实 DB 细则是没问题的,也能起到少量劝慰军心的作用吧。是以大事件眼前,L 老是拿着星巴克晃悠。谁皆猜不到他到底是爱喝,照旧臭显摆。
F 晃着小脑袋过来了,Release 一经开动了 1 小时,按理 DB 部分部署早该完成。此次略微向上 L 的预期,但莫得告警,行家也就莫得太宽解上。直到 F 过来找 L, 折腰问了下:
“L, 有段更新数字的剧本,跑了40多分钟还没肆意。表面上只须100多万数据会被更新,花这样长技巧,不知谈是否浅薄?”
F 是个五年陈了,该经验的也皆经验了,如今冒出这样个疑问,L 亦然把稳起来。“哪段剧本?”
太阳城SET 威尼斯人体育NOCOUNT ON ; DECLARE @SalesQuotaKey Bigint DECLARE MY_Cur Cursor For SELECT TOP 1000000 SalesQuotaKey FROM FactSalesQuotaAudit WHERE SalesAmountQuota<500000 ORDER BY SalesAmountQuota ASC OPEN MY_Cur FETCH NEXT FROM MY_Cur INTO @SalesQuotaKey WHILE(&FETCH_STATUS = 0 ) BEGIN UPDATE FactSalesQuotaAudit SET SalesAmountQuota = SalesAmountQuota + 100000 WHERE SalesQuotaKey = @SalesQuotaKey FETCH NEXT FROM MY_Cur INTO @SalesQuotaKey END CLOSE MY_Cur DEALLOCATE MY_Cur
“嗯,这段貌似会有问题,就看索引是怎样建的”L 常说,trouble shooting 就像是作念窥探,惟恐候,话其实是说给我方听的,“要是在 SalesAmountQuota 上加索引的话,这就有危急”
“果如其言”,L掀开 SSMS窗口,找到了索引界说:
CREATE Unique CLUSTERED index PK_SalesQuotaKey ON FactSalesQuotaAudit(SalesQuotaKey) CREATE INDEX IDX_SALES_AMT_QUTA ON FactSalesQuotaAudit(SalesAmountQuota)
为保分析无误,L 照旧先看了下近况:
2017年4月11日,安徽省六安市纪律检查委员会其官网发布消息,称经六安市委批准,市纪委对市民政局原调研员段维平(已退休)严重违纪问题进行立案审查。SELECT TOP 1000000 SalesQuotaKey FROM FactSalesQuotaAudit WHERE SalesAmountQuota<500000 ORDER BY SalesAmountQuota ASC
“刻下来看,这段剧本还在持续跑着”
“但推行推断透露正确跑了 SalesAmountQuota 的索引呢?”F 不明
“其实这里果然这个索引惹的祸”
马上到来的端午节,人们多是怀着一种民间情愫,欧博平台觉得是心内的一件郑重的事情,要好好地对待。于是就开始准备起来,包粽子是必不可少的。见了面,总是会问,粽子包好了吗?没有谁家不在端午吃粽子的。
博彩平台评价排名皇冠博彩网站 即时投注“索引是用到了,然则每次更新,更新的那行跑到 IDX_SALES_AMT_QUTA 索引后头去了,导致无尽在更新 SalesAmountQuota 的值,直到大于 50万”L 认为平时太强调 seek 索引了,但莫得全面绝对的证明索引其实也有好心办赖事儿的时候。是以索引要给 F 画个脑图:
皇冠现金皇冠比分“更新完的数据又排回索引了,而游标一直在往前读得志要求的数据,你不错细念念下这个兴致的经过”看到 F 时时点头,L 自以为一经讲的很赫然了。
"终于跑收场," F 眼见监控 Dashboard 上的阿谁超长 session 袪除了,激情也开动和悦起来。
“大错行将发生”L 一盆冷水浇昔时,F 又不惑,90后小小姐的激情,果然跟天气相似,已而皆能鬼出神入。
SELECT COUNT(*) FROM FactSalesQuotaAudit WITH(NOLOCK) WHERE SalesAmountQuota<500000
“你看,遵守是0,细则不是你念念要的遵守吧。你开心细则是在动怒50万额度的那些销售上,再加十万,刻下沿路皆加到了50万。这是典型的 Halloween 问题”
“那,怎样办?”F 靠近这段让她面红过耳的游标,险些奔溃
皇冠hg86a
“用临时表,先把数据更新对了,再找最优贬责措施”
"那什么是 Halloween 问题?"
故事发生在 50年前的一个晚上,1970年驾驭,IBM 的一群商议员决定给动怒25000好意思金年薪的雇员,增多10% 的薪水。
他们写了一段 SQL,莽撞是这样的:
update Employee Set Salary = Salary * (1 + 10%) where Salary < 25000
遵守等他们运行竣事,发现悉数的年薪动怒 25000 好意思金的雇员,他们的薪水完好意思加到了 25000.
举例,原来是 15000薪水的雇员和 8000 好意思金年薪的雇员,他们的薪水更新收场之后,皆到了25000 好意思金。这一天赶巧是 10月31日,Halloween Day. 是以被称为 Halloween Problem.
相关资讯