关于数据库优化

  • 服务器层面: 配置mysql性能优化参数

  • 数据库结构层面:优化数据表结构、字段类型、字段索引、分表、分库、读写分离等等

  • 数据库层面:优化sql语句,合理使用字段索引

  • 代码层面: 使用缓存和NoSQL数据库方式存储,如MongoDB/Redis来缓解高并发下数据库查询的压力

  • 减少数据库操作次数,尽量使用数据库访问驱动的批处理方法

  • 不常使用的数据备份迁移,避免每次都在海量数据中检索

  • 提升数据库服务器硬件配置,或者搭建数据库集群

  • 编程手段防止sql注入:使用JDBC PreparedStatement按位插入或查询:正则表达式过滤非法字符串

关于sql语句优化

  • 尽量避免在where子句中使用!= 或 <>操作符

  • 避免在子句中使用or来连接条件

  • 尽量避免在where子句中对字段进行null值判断

    1
    2
    3
    
    select id from user where num is null; ×
    将num设置默认值为0,确保表中没有null值
    select id from user where num = 0; √
  • 使用exists关键字代替in

    1
    2
    
    select name from a where id in (select id from b)   ×
    select name from a where id exists(select 1 from b where id = a.id)   √
  • 连续性的值,少用in 或not in ,使用 between and 替换

  • 用where子句代替having。having会在检索出所有记录之后才会对结果集进行过滤


在变幻的生命里,岁月,原来是最大的小偷