為什麼我不贊成開發來寫檢視
我有個“歧視”,就是開發寫的檢視基本都是有問題的。這來自於我多年的實際工作。檢視是資料庫的一個工具,但是絕大部分開發不是從資料庫角度出發來寫的。所以一般來說寫的並不會讓資料庫很舒服,甚至是痛苦。
今天有一個開發拿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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我為什麼選擇成為獨立開發者
- 知乎萬贊:為什麼我不建議你轉行學python?Python
- [譯] 為什麼我用 JavaScript 來編寫 CSSJavaScriptCSS
- 我為什麼使用Linux做開發Linux
- 為什麼前端開發這麼不穩定?前端
- 我為什麼冒險寫QuarkAdmin!
- 為什麼我們越來越不喜歡用網站?網站
- 我為什麼開始寫技術公眾號
- python為什麼不適合web開發PythonWeb
- 我為什麼認為Flutter是移動應用程式開發的未來?Flutter
- 為什麼我認為Flutter是移動應用程式開發的未來Flutter
- 我為什麼用Flutter開發-2年開發心得Flutter
- 我們為什麼要用英文寫文件?
- GDB為什麼檢視不了原始碼?原始碼
- 成為比開發硬氣的測試人,我都經歷了什麼?
- 程式設計師:為什麼“基礎不牢”成為我薪資被砍的理由?!程式設計師
- [譯]我們為什麼要寫 super(props)?
- 我們為什麼要技術寫作
- Tobias Koppers:我當初為什麼寫webpackWeb
- React Hooks 可以為我們帶來什麼,及為什麼我覺得React才是前端的未來ReactHook前端
- 現代前端工程為什麼越來越離不開 Monorepo?前端Mono
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- 我的遊戲這麼好玩,為什麼賣不動?遊戲
- 精讀:為什麼我們要寫super(props)
- 什麼是Web開發?如何成為一個Python Web開發人員?WebPython
- 沒有什麼,開發ASP.NET時隨便寫寫,想到什麼寫什麼ASP.NET
- 程式老鳥:我為什麼喜歡敏捷開發框架敏捷框架
- 網站為什麼會打不開網站
- 面試官:Java 反射是什麼?我回答不上來!面試Java反射
- 這玩意兒我也寫得出來,為什麼我就不是高階程式設計師呢?程式設計師
- 檢視是什麼玩意
- MySql 什麼是檢視MySql
- 音視訊開發:為什麼推薦使用Jetpack CameraX?Jetpack
- 《後來的我們》,為什麼我們會錯過彼此?
- 資料視覺化為什麼對我們的生活影響越來越大?視覺化
- 什麼是前端開發?為什麼要學前端開發?前端
- 為什麼datawork 資料開發頁面展示不出來?
- 《DARQ》開發者:我為什麼拒絕平臺獨佔?