最近不爽的事情
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/database/i_am_in_a_bad_mood.html
遇到很多不爽的事情,必须发泄一下了,不然要疯了。
数据库中发现以前的天才们竟然用VARCHAR存数字,SMALLINT范围内的数字,用了VARCHAR(100)的类型,我想问你们想干嘛?
慢查中不少SQL是因为这种字段引起的,建索引吧,key_len太长,效率很低,不建索引一样效率低。ALTER成数字类型吧,代码中竟然是用=’XXX’写的。
改代码吧,数据层分离又做一半就没人做了,程序中到处都分布着这种SQL。让我怎么优化,怎么优化?!
有的字段,只有0和1两个值,却用int类型,1个字节能解决的问题非要搞成4个字节!有的字段,明明只有几个值,却非得用VARCHAR存,ENUM我在培训中已经讲过了。
行,我来改。想知道某个字段可能有几个值,一问没一个人知道,我怎么改?!
要求注释数据库,做完了一看跟数据库中的字段值根本对不上,一问,谁也不能保证数据库注释的准确性,建表的人已经离职了,我真的是要崩溃了。
有的数据表堆了几年的数据,想分离,程序员怕麻烦要改程序,程序中没有注释,不知道水平拆分后要改哪些地方,系统会挂掉,好吧,那就不改了,天天进慢查我也没办法。
我很想知道我下一步工作怎么展开?!我很想干活,但是现在我找不出活可干!任何一点改动都可能引起谁也不知道的结果,却没有人愿意去知道,让我一个人去看懂这整个庞大无注释的系统代码,我不是神……
我比较容易激动……
我悄悄地告诉你答案……
记住别告诉别人哦,说不定还能申请专利呢。
就算不能申请专利,也能解除你心中的疑惑。
就算不能解除疑惑,还可以抚平精神的伤痛……
不说废话了,答案很简单:
VARCHAR是可视化建表时默认的数据类型。
点鼠标比较麻烦,直接用也死不了,还管啥效率啊。
我相信当时的大牛们就是这么想的,不信你试试看,呵呵。
[回复]
>> 有的字段,只有0和1两个值,却用int类型
数据库中我不清楚,但是普通的程序中,统一用int来代表bool,否则会涉及到字节对齐问题,在windows中,dll 加载时很容易出现奇怪的问题。
windows的程序貌似是8字节对齐的
[回复]
P.Linux 回复:
14 4 月, 2010 at 20:12
因为数据库中有tinyint,只用一个字节,int用4个字节,索引的长度不同会影响执行计划。数据库中数据量庞大,每一点节省常年累积起来都是不小的提升。
[回复]