6
回答
数据库存储时使用的数据类型
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

    在设计表字段时我们通常的做法是什么数据类型,就在数据库中定义相应的字段类型。可是我发现有时候这种情况真的不好用。

    定义时间类型,有时候只需要到月,有时候只需要到分钟。数据库中没有对应的字段类型,存String 就没问题,想怎么存怎么存,数据拿到后台处理一下也可以转换成 时间类型

    定义小数类型,浮点数很难控制,String 类型得长度就不会随机发生变化,就算要计算也可一转化成 定点小数 来计算。从数据库取出的小数是浮点型得吧?如果是,计算的时候还是要转换成 定点型 得。

    那么问题来了~ 为什么我们不直接用 字符类型作为存储类型呢~ 

<无标签>
举报
小鸟00
发帖于7天前 6回/92阅
共有6个答案 最后回答: 4天前

id和时间用integer

文章正文用text

其他一律nvarchar

开发时候最吃紧的是时间,nvarchar最简单暴力。没功夫搞优化,而且优化要留着后期卡了来弄凸显工作成果不然以后干嘛去。

--- 共有 1 条评论 ---
太黑_thj最后一句亮了,不然别人还真以为你没干活,看来以后也得这么干 7天前 回复

你自己也说了,用字符型代替其他类型的时候需要转换。转换当然就会损失很多性能,增加编程上的复杂度。字符型代替数字存储也会占用更多的空间。而且这么做很不规范。

--- 共有 2 条评论 ---
DeMoNHaDeS 回复 @小鸟00 : 有时候是需要转换的,但是设计的好的情况下大部分时候都不需要转换。还没有遇到过业务逻辑复杂到每个字段都有多种类型的使用要求 6天前 回复
小鸟00很多时候 数据类型转换是避免不了得 6天前 回复

只有字符串(或者可以认为是“无类型”)类型的存储,在做有类型的转换时,会有比较大的损耗,比如说我有1千万的数据……

日期类型有两种解决方案:1. 只存纯数字类型的时间戳,上层自己做处理(是转换还是截取,保存的时候存所有字段)。2. 只接受某种类型的数据结构,比如yyyy-MM-dd HH:mm:ss

--- 共有 1 条评论 ---
小鸟00我要显示这么一个时间 yyyy-MM-dd HH:mm,还是要转换。最终结果 在很多情况下都是需要数据处理得,你说的一千万,在不分表 分库的 情况下,怎么样都是崩得 6天前 回复

计算机里面存储就是0和1,数据类型已经做了一层抽象和转化,然后你还不用,还自己用string去解析,性能和准确性能比数据库内置固化的数据类型要好?

        跟朋友讨论了一下这个问题,感觉他说的比较有道理。

        存储 整形,浮点型,和时间类型 使用来做比较筛选作用得。数据库的优势也是在于筛选。整形,浮点型可以比较大小,时间好像也可以,还可以使用 between 关键字查找。

快速出活varchar,但属于前人埋坑后人踩的行为。 规范,是无数万人坑总结出来的。除非你很清楚自己在做什么,否则不要违反规范。
顶部