# 合适的数据类型&字符集&索引

# char&varchar

适用于字符串

  • char 会删除尾部空格,定长,比varchar快,浪费存储空间,适用于长度变化不大且对查询速度有较高要求的数据
  • varchar 反正比较常用

# text&blob

适用于大文本,进行删除操作会造成空洞,要定期使用optimize table对碎片进行整理

  • blob 能保存二进制数据,比如照片
    • blob
    • mediumblob
    • longblob
  • text 只能保存文本
    • text
    • mediumtext
    • longtext

# 字符集选择

  • 满足国际化,应该选择unicode
  • 只需要大量中文数据 选择gbk
  • 默认是utf-8

# 索引base

索引是为了方便搜索数据的时候,数据库为你生成的一个数据结构,一般用btree或着b+tree,或者hash索引。如果我没理解错,索引生成后数据库会将你作为索引的那个列生成一份索引以方便搜索,减少查询时间

  • 可以用explain来查看索引使用
  • base
-- format:create index [indexname] on tablename (clounmname(long));

mysql> create index iname on auto_incre_demo (name(10));
Query OK, 0 rows affected (0.02 sec)

-- drop index [indexname] on [tablename];
  • 原则
    • 最适合索引的列是出现在where子句中的列,或者连接子句中指定的列
    • 使用唯一索引,列的值最好有不同的值
    • 使用短索引,如果对字符串进行索引,应该指定一个前缀长度,比如对前10个字节进行索引
Last Updated: 2020/3/1 下午7:17:59