mysql - 为啥Typecho和wordpress的状态等字段都用varchar而不用tinyint?
黄舟
黄舟 2017-04-17 11:41:06
[MySQL讨论组]

在这之前,我都是用tinyint状态的,比如用户的状态:1代表正常用户,0代表锁定用户,2代表逻辑删除的用户,文章用1代表正常文章,2代表逻辑删除的文章等等。
但是我看了typechowordpress的表结构后,发现我对世界的认知是错误的,这些著名的程序表结构和我想的完全不一样~
好了,那么问题来了:
Q1:用varchar存储状态除了一眼就可以看出是啥状态,还有啥好处么(我认为70和wordpress团队都是经验丰富的人,这么做一定有啥道理,只是我境界还不够而已)?相对于tinyint会不会慢一丢丢?
Q2:为啥有的字段使用varchar(1000)都不用text类型?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
巴扎黑

这其实是两种不同的设计思路,没有谁对谁错,开源软件需要考虑的是灵活性和对开发者的友好。

我就灵活性方面展开来讲一点,比如我做了一个插件叫test,它需要会给文章重新定义一种状态

  1. 如果我是用数字表示状态,那插件以外的模块怎么知道这个数字表示什么状态呢?而且数字非常容易产生歧义,你的插件用了10这个表示这个状态,如果其它插件也用这个数字呢?
  2. 如果我用的是字符串,那么我把这个状态命名为test_status就ok了,前面是前缀,也可以避免其他插件重复

实际上我在开发的时候也没有预想到其他开发者会这么用,但是我在设计时订立的原则就是
Keep it simple and stupid

高洛峰

用tinyint一般要维护个字典表,要不然数字是个很坑的东西。
tinyinit与varchar的区别应该主要是在CPU和空间上,效率不能定会更低,而CPU和空间现在应该都不是瓶颈。
现在我自己比较倾向于varchar。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号