POST TIME:2018-12-03 17:34
簡(jiǎn)介:從業(yè)十年,始終專(zhuān)注于 SQL。十年一劍,十年磨礪。3 年通信行業(yè),寫(xiě)就近 3 萬(wàn)條 SQL;5 年制造行業(yè),遨游在 ETL 的浪潮;2 年性能優(yōu)化,厚積薄發(fā)自成一家。
注:《SQL性能優(yōu)化與批判》是黃浩老師的系列新作,他將從過(guò)往在項(xiàng)目技術(shù)支持中碰到的諸多案例入手,細(xì)化到每一條問(wèn)題 SQL 的內(nèi)在病因,反思每一個(gè)案例的背后深思,,抽絲剝繭,層層深入。
今天跟大家分享的是 WM_CONCAT 優(yōu)化,這是一次憑借技術(shù)+經(jīng)驗(yàn)+運(yùn)氣三重加成才得以解決的案例,are you ready?
一、案例
初來(lái)乍到,如臨深淵
公元 2015 年 7 月 20 日,天氣還是一如既往的炙熱,徐徐海風(fēng)也吹不散身上的熱量。在經(jīng)過(guò)近一個(gè)小時(shí)的班車(chē)加徒步,我正式開(kāi)啟了在 H 公司 I 項(xiàng)目技術(shù)支持的第一天。
因?yàn)樾畔策m的緣故,第一次進(jìn)入項(xiàng)目現(xiàn)場(chǎng)的外協(xié)人員需要管理接待電子流。因?yàn)槭欠茄邪l(fā)區(qū)域,倒也快捷,經(jīng)過(guò)兩重關(guān)卡后,順利進(jìn)入到項(xiàng)目現(xiàn)場(chǎng)。
媽呀,一個(gè)足球場(chǎng)般大小的辦公場(chǎng)地,一排排的辦公桌和電腦井然有序,但桌面上的辦公用品卻凌亂狼藉,而座位跟座位之間沒(méi)有任何的遮擋。
當(dāng)時(shí)已經(jīng)九點(diǎn)多,基本上座無(wú)虛席,雖然開(kāi)著空調(diào),仍然能感覺(jué)到一股由電腦散發(fā)出來(lái)的摻雜著鐵銹及灰塵味的熱氣,以及由此帶來(lái)的壓抑感。
在與現(xiàn)場(chǎng)同事簡(jiǎn)短的寒暄后,我便立馬投入到工作——當(dāng)然是交接工作。與同事的溝通中,我獲取了如下信息:
這位同事來(lái)這個(gè)項(xiàng)目不足兩周。
離職的原因是適應(yīng)不了外包的工作方式。
項(xiàng)目組性能優(yōu)化工作開(kāi)展很困難,項(xiàng)目組在這方面的投入不夠,重視度也不夠。
綜合起來(lái)就是一個(gè)字:坑,并且是巨坑。原本擔(dān)心我主不雅觀上的能力問(wèn)題會(huì)影響到工作,沒(méi)想到客不雅觀環(huán)境也是如此糟糕,我的表情跌倒了冰點(diǎn)。
明天是這位同事在項(xiàng)目組的 last day,所以交接工作必需在今天內(nèi)完成。好在同事進(jìn)項(xiàng)目不久,還沒(méi)有接觸到太多的工作內(nèi)容,手頭上就一個(gè)在優(yōu)化的 SQL。
因?yàn)檫@個(gè) SQL 的優(yōu)化已經(jīng)持續(xù)了幾天時(shí)間,所以到目前顯得有些緊迫:該 SQL 的優(yōu)化被擺設(shè)在周六上線,因此必需要在周三前給出優(yōu)化方案。
離周三只有不到 2 天的時(shí)間了,而目前的優(yōu)化進(jìn)度還停留在問(wèn)題定位階段,還不確定問(wèn)題處在哪里?換句話說(shuō),不是工作交接,而是從零開(kāi)始。
我在同事的交接文檔中找到了問(wèn)題 SQL,代碼如下: