Re: [討論] 把資料全存成字串的好處是?

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

Links booklink

Contact Us: admin [ a t ] ucptt.com