作者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/cn.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