数据库day05

SQL优化

  • 查找SQL尽量不要使用 select * , 而是具体字段
  • 避免在 where 字句中使用 or 来连接条件
  • 使用 varchar 代替 char
  • 尽量使用数值替代字符串类型
  • 查询尽量避免返回大量数据
  • 使用 explain 分析你 SQL 的执行计划
  • 是否使用了索引机器扫描类型
  • 创建 name 字段的索引
  • 优化 like 语句
  • 字符串怪现象
  • 索引不宜太多,一般 5 个以内
  • 索引不太适合建在有大量重复数据的字段上
  • where 限定查询的数据
  • 避免在 where 中对字段进行表达式操作
  • 避免在 where 字句中使用 != 或 <> 操作符
  • 去重 distinct 过滤字段要少
  • where 中使用默认值代替 null
  • 批量插入性能提升
    • 默认新增SQL有事务控制,导致每条都需要事务开启和事务提交;而批量处理是一次事务开启和提交。自然速度飞升
    • 数据量小体现不出来
  • 批量删除优化
    • 一次性删除太多数据,可能造成锁表,会有lock wait timeout exceed的错误,所以建议分批操作
  • 提高 group by 语句的效率
  • 复合索引最左特性
    • 复合索引也称为联合索引
    • 当我们创建一个联合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则
    • 联合索引不满足最左原则,索引一般会失效,但是这个还跟Mysql优化器有关的
  • 排序字段创建索引
  • 删除冗余和重复的索引
  • 不要有超过5给以上的表连接
  • inner join、left join、right join,优先使用 inner join
    • 如果inner join是等值连接,返回的行数比较少,所以性能相对会好一点
    • 同理,使用了左连接,左边表数据结果尽量小,条件尽量放到左边处理,意味着返回的行数可能比较少。这是mysql优化原则,就是小表驱动大表,小的数据集驱动大的数据集,从而让性能更优
  • in 子查询的优化
  • 尽量使用union all 替代 union
    • union和union all的区别是,union会自动去掉多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复
      union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
      union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION

JDBC

概述:

  • 通过 java 程序连接数据库,是一套标准,本质上就是用jar包里的各种工具类。

开发步骤

  1. 在目录下创建 lib 文件夹
  2. 根据版本导入对应的 jar 包
  3. 将 lib 设置为library

数据库

连接数据库

Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/cgb2105";
String user = "root";
String passWord = "root";
Connection connection = DriverManager.getConnection(url,user,passWord);

查找数据

String sql = "select * from dept";
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery(sql);
while (result.next()){
    int deptno = result.getInt("deptno");
    String dname = result.getString("dname");
    String loc = result.getString("loc");
    System.out.println(deptno + "\t" + dname + "\t" + loc);
}
result.close();
statement.close();
connection.close();
上一篇:Java语言学习day05--7月2日


下一篇:JavaScript 基础(day05)