作者accessdenied (存取違規)
看板Soft_Job
標題Re: [討論] 把資料全存成字串的好處是?
時間Sun Nov 5 02:44:15 2017
完全沒有好處
我是他主管的話,早就開除他了
根本是軟體圈的亂源!
是不是table scan也不是關鍵問題,所以你也是非懂似懂。
首先,資料排序就是一個問題,數值型態排序,100 > 9,但是字串 “9” > “100”用
錯型態資料庫對你的排序完全是錯亂的!
更不要說 index 在這種情況無法發揮效益!因為index 就是依賴B-Tree排序來加快效能!
再來就是禍害千年的維護問題,某個欄位看起來都是數字,但資料型態是字串,如果你沒
有整個資料庫全部的資料都看過,你敢打包票說裡面全是數字沒有不乾淨的髒東西?
這種在做資料轉移和統計分析最容易踩到古人的地雷
總之就是一個混蛋、亂源,快讓他退休吧
要我刪文,老規矩,私信我
※ 引述《andymai (人生只有一次)》之銘言:
: 如題
: 某個同事不知道為什麼有個根深蒂固的觀念
: 每次只要談到資料表設計
: 都會說要把資料存成字串(非 json)
: 但是存在字串的話
: 查詢時不是會引起 full table scan 嗎?
: 如果是數值 拿出來的時候要轉型態才能用
: 存回去又要再轉成字串
: 某次又耳聞某公司也會這樣做
: 這下小弟實在不懂了
: 好奇好處在哪?
: 版上有大大願意說明一下嗎?
: (為什麼不問他? 因為上次說過 full table scan 的問題了
: 所以上次沒這樣做 這次又...)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.139.28
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1509821058.A.AE9.html
1F:推 stitchris: 最怕還到觀念完全錯誤還以爲自己是對的, 指正他還說我 11/05 05:36
2F:→ stitchris: 這樣做這麼久了都沒出事我是對的 11/05 05:36
3F:推 arxing: 我上一份工作剛進去 要接api也是發現資料庫欄位全部都字 11/05 06:32
4F:→ arxing: 串… 格式還不一致導致我還要例外處理 礙於菜鳥也不能說 11/05 06:32
5F:→ arxing: 什麼 11/05 06:32
6F:推 katy50306: 待的小公司 之前數值跟日期都存字串 轉換時採了一堆雷 11/05 08:07
7F:推 chocopie: 不只小公司,大公司也有可能這樣搞...... 11/05 08:13
8F:→ chocopie: 如果是跨國外商,情況可能好一點 11/05 08:13
9F:→ fgh81113: 不是大小公司問題 是最初寫的那個人是不是製杖問題 11/05 09:34
10F:推 abccbaandy: 碰過很多數字存字串的耶...不過日期存字串就有點扯了 11/05 11:24
11F:推 mintu: 感覺那個人不想了解 DB 內欄位類型的差異 11/05 12:39
12F:推 devilkool: 銀行滿多系統需要日期存字串的... 11/05 12:58
13F:噓 ck52623: 政府機關也是一堆這種垃圾db 11/05 15:13
14F:→ f496328mm: 政府機關的資料真的很垃圾,沒辦法,所以才要data clea 11/05 19:26
15F:→ f496328mm: n 11/05 19:26
16F:推 expury: 但是,記得有的語言似乎可以用字母順序排序or大小(? 11/05 20:30
17F:→ expury: 忘記哪個語言 11/05 20:30
18F:→ accessdenied: 樓上,就是因為按照字母順序排序,所以9才會大於100 11/05 20:52
19F:→ accessdenied: 啊 11/05 20:52
20F:→ accessdenied: 因為字串比對使用字元內碼排序,無論ascii或unicode 11/05 20:54
21F:→ accessdenied: 都一樣 11/05 20:54
22F:→ soi1dsnake: 都用字串了,當然是存009啊 11/06 00:14
23F:→ accessdenied: 當你資料突破千位,上面的方法變成要臨時擴充,舊 11/06 00:38
24F:→ accessdenied: 資料要全部抓出來轉換,這不是禍害千年的維護問題 11/06 00:39
25F:→ accessdenied: 嗎?不做的話,系統就會開始異常了 11/06 00:39
26F:推 frank868: 我永遠記得有個年資18年的前輩用字串來判斷數字的 11/06 22:13