Mysql使用注意点

引言

每一条都是来自一线的实战经验、每一条都是背后血淋淋的教训,不要华丽,只要实用。

正文

  • 尽量不在数据库做运算(比如md5/Order by Rand)
  • 拒绝3B(Big SQL,Big Transaction,Big Batch)
  • 控制单表的数据量
  • 将字符转化为数字(比如用INT存储IP地址,而不是CHAR(15))
  • 避免实用NULL字段(NULL很难进行查询优化,而且索引需要浪费额外空间,含NULL的复合索引无效)
  • 少用并且拆分TEXT/BLOB
  • 不在数据库里存放图片
  • 谨慎合理添加索引(改善查询,减慢更新,索引并不是越多越好,能不加的尽量别加)
  • 字符字段尽量建前缀索引
  • 不要再索引列做运算(无法使用索引,导致全表扫描)
  • 自增列或者全局ID做INNOBD主键
  • 尽量不要使用外键(额外开销,可‘到达’其他表,意味着锁,高并发时容易死锁。可以有程序保证约束)
  • SQL语句尽可能的简单
  • 保持事务(连接)短小
  • 尽量不用SELECT *(会先去数据库请求所有列,然后丢掉不需要列。只取需要的列)
  • OR尽可能的改为IN、UNION()
  • 避免负向查询和%前缀模糊查询(负向查询==NOT、!=、<>、NOT IN、NOT LIKE,前缀模糊会导致不能使用索引,全表扫描)
  • 高效分页(情况分为几种,这里不过多进行阐述)
  • 使用UNION ALL 而UNION
  • GROUP BY去除排序
  • 进行使用同数据类型的列值比较
  • 使用Laod data导数据
  • 打散大批量更新

你可能感兴趣的:(database)