最近不爽的事情

12月 22nd, 2009 | Posted by | Filed under 数据库

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/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我在培训中已经讲过了。
行,我来改。想知道某个字段可能有几个值,一问没一个人知道,我怎么改?!

要求注释数据库,做完了一看跟数据库中的字段值根本对不上,一问,谁也不能保证数据库注释的准确性,建表的人已经离职了,我真的是要崩溃了。

有的数据表堆了几年的数据,想分离,程序员怕麻烦要改程序,程序中没有注释,不知道水平拆分后要改哪些地方,系统会挂掉,好吧,那就不改了,天天进慢查我也没办法。

我很想知道我下一步工作怎么展开?!我很想干活,但是现在我找不出活可干!任何一点改动都可能引起谁也不知道的结果,却没有人愿意去知道,让我一个人去看懂这整个庞大无注释的系统代码,我不是神……

我比较容易激动……

标签:
  1. Wong Chiu
    1月 1st, 201001:59

    我悄悄地告诉你答案……
    记住别告诉别人哦,说不定还能申请专利呢。
    就算不能申请专利,也能解除你心中的疑惑。
    就算不能解除疑惑,还可以抚平精神的伤痛……
    不说废话了,答案很简单:
    VARCHAR是可视化建表时默认的数据类型。
    点鼠标比较麻烦,直接用也死不了,还管啥效率啊。
    我相信当时的大牛们就是这么想的,不信你试试看,呵呵。

    [回复]

  2. baikaishiuc
    4月 14th, 201010:50

    >> 有的字段,只有0和1两个值,却用int类型

    数据库中我不清楚,但是普通的程序中,统一用int来代表bool,否则会涉及到字节对齐问题,在windows中,dll 加载时很容易出现奇怪的问题。

    windows的程序貌似是8字节对齐的

    [回复]

    P.Linux 回复:

    因为数据库中有tinyint,只用一个字节,int用4个字节,索引的长度不同会影响执行计划。数据库中数据量庞大,每一点节省常年累积起来都是不小的提升。

    [回复]