zoukankan      html  css  js  c++  java
  • 表的优化与列类型选择

    列选择原则:
    1:字段类型优先级 整型 > date,time > enum,char>varchar > blob
    列的特点分析:
    整型: 定长,没有国家/地区之分,没有字符集的差异
    time定长,运算快,节省空间. 考虑时区,写sql时不方便 where > ‘2005-10-12’;
    enum: 能起来约束值的目的, 内部用整型来存储,但与char联查时,内部要经历串与值的转化
    Char 定长, 考虑字符集和(排序)校对集
    varchar, 不定长 要考虑字符集的转换与排序时的校对集,速度慢.
    text/Blob 无法使用内存临时表

    2: 够用就行,不要慷慨 (如smallint,varchar(N))
    原因: 大的字段浪费内存,影响速度,
    以年龄为例 tinyint unsigned not null ,可以存储255岁,足够. 用int浪费了3个字节
    以varchar(10) ,varchar(300)存储的内容相同, 但在表联查时,varchar(300)要花更多内存

    3: 尽量避免用NULL()
    原因: NULL不利于索引,要用特殊的字节来标注.
    在磁盘上占据的空间其实更大.

    Enum列的说明

    1: enum列在内部是用整型来储存的

    2: enum列与enum列相关联速度最快

    3: enum列比(var)char 的弱势---在碰到与char关联时,要转化. 要花时间.

    4: 优势在于,当char非常长时,enum依然是整型固定长度.

    当查询的数据量越大时,enum的优势越明显.

    5: enum与char/varchar关联 ,因为要转化,速度要比enum->enum,char->char要慢,

    但有时也这样用-----就是在数据量特别大时,可以节省IO.

  • 相关阅读:
    (转)剖析Delphi中的构造和析构
    求排列组合
    用链表写的猴子选大王
    查找文件
    在Delphi程序中应用IE浏览器控件
    汉字转UNICODE?
    webbrowser去掉边框
    自己写的猴子选大王
    数据库IDE查询实例
    Compiz Check测试Linux桌面3D兼容性
  • 原文地址:https://www.cnblogs.com/microtiger/p/7527720.html
Copyright © 2011-2022 走看看