為什麼我不贊成開發來寫檢視
我有個“歧視”,就是開發寫的檢視基本都是有問題的。這來自於我多年的實際工作。檢視是資料庫的一個工具,但是絕大部分開發不是從資料庫角度出發來寫的。所以一般來說寫的並不會讓資料庫很舒服,甚至是痛苦。
今天有一個開發拿SQL找到我,我一眼看到一個V_XXX。不用問,這就是一個檢視,我對開發說你開啟它,我看看。我極度懷疑這個寫的不合格。開啟一看,果然沒讓我失望。寫的異常複雜就不說了,都這樣。我們今天說點與眾不同的。就是結尾的地方我眼前一亮看到group by 列1,列2,列3.。。。。。。我就往下看,很多。多的超過我見過的記錄了。我饒有興致的數了一下134個。也就是說前面多複雜我先不管,最後group by 了130多列。好傢伙,我從業十多年著實沒見過這樣的。
group by是分組,130多個欄位組合的分組我也是生平第一次見。這種分組排序消耗是很大的,其實就是嚴重的設計問題。我建議是重新梳理需求,我們重寫查詢,選擇合適的基表來完成。不要在這個上面繼續錯下去了。
我想起我第二家公司時候看到一個之前的人寫了4000多行的儲存過程,為的就是為了給表定時增加一個分割槽。可憐的人,不知道資料庫有自動分割槽的功能。一句話就搞定了。每次想到這個時候我就想到,TiDB是沒有儲存過程、觸發器和函式的。可能即使是國產第一的資料庫考慮到如果讓開發自己DIY的話,對資料庫的衝擊太大。還是別給他們這種自由了。
我一般寫檢視和儲存過程這種,基本10行解決。10行解決不了,要麼需求問題,要麼設計問題(表設計或者邏輯設計)。
有的時候真的佩服資料庫,這種“垃圾”SQL居然也執行下來沒有奔潰,資料庫也真不容易。而且還執行了10年以上了,當然換一種資料庫是不是還是能支援,還真不一定。大機率可能會奔潰。畢竟不是每個資料庫都這麼慣著的。
想起一句耳熟能詳的話:在糟糕的設計下,一切最佳化都是無能為力的。(也許強大的硬體,比如一體機那種能解決)。所以設計(表、檢視)是至關重要的,需要有專業的人士來完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2927810/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼我要用 C 來開發遊戲?開發遊戲
- 為什麼我的mysql配不起來MySql
- 知乎萬贊:為什麼我不建議你轉行學python?Python
- [譯] 為什麼我用 JavaScript 來編寫 CSSJavaScriptCSS
- 為什麼我偏愛用GitHub來寫書?Github
- 為什麼客戶不喜歡我們開發的軟體
- 為什麼我不再做.NET開發
- 為什麼前端開發這麼不穩定?前端
- 我為什麼不喜歡框架框架
- 為什麼我們越來越不喜歡用網站?網站
- 為什麼我要用C寫遊戲遊戲
- 我為什麼寫《致IT同仁》薦
- 我為什麼開始寫技術公眾號
- Flarum 的故事:我為什麼開發Flarum
- 我為什麼使用Linux做開發Linux
- 我為什麼用Flutter開發-2年開發心得Flutter
- 為什麼我認為Flutter是移動應用程式開發的未來Flutter
- 我為什麼認為Flutter是移動應用程式開發的未來?Flutter
- 為什麼要寫成List a = new ArrayList()
- 我為什麼選擇成為獨立開發者
- python為什麼不適合web開發PythonWeb
- 我為什麼冒險寫QuarkAdmin!
- 為什麼我要寫自己的框架?框架
- 成為比開發硬氣的測試人,我都經歷了什麼?
- GDB為什麼檢視不了原始碼?原始碼
- 我做的網頁為什麼不漂亮?網頁
- 為什麼我的servlet在weblogic6.1中跑不起來?ServletWeb
- 我看《App 為什麼不是未來?》APP
- React Hooks 可以為我們帶來什麼,及為什麼我覺得React才是前端的未來ReactHook前端
- 我的遊戲這麼好玩,為什麼賣不動?遊戲
- 程式設計師:為什麼“基礎不牢”成為我薪資被砍的理由?!程式設計師
- 我們為什麼要技術寫作
- Tobias Koppers:我當初為什麼寫webpackWeb
- 為什麼我要編寫自己的UIKitUI
- Koala Framework是什麼?我為什麼要寫這個框架?Framework框架
- 為什麼機器學習行業的發展離不開 “開源”機器學習行業
- 軟體能為我們帶來什麼???今天算開張!
- 請問JF框架的一些類為什麼不寫成包私有的?框架