本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1.sql优化
1.1 sql的执行顺序
(1) FROM [left_table] 选择表
(2) ON <join_condition> 链接条件
(3) <join_type> JOIN <right_table> 链接
(4) WHERE <where_condition> 条件过滤
(5) GROUP BY <group_by_list> 分组
(6) AGG_FUNC(column or expression),... 聚合
(7) HAVING <having_condition> 分组过滤
(8) SELECT (9) DISTINCT column,... 选择字段、去重
(9) ORDER BY <order_by_list> 排序
(10) LIMIT count OFFSET count; 分页
1.2 优化问题
- 查询SQL尽量不要使用select *,而是具体字段
- 避免在where子句中使用or来连接条件
- 使用varchar代替char
varchar变长字段按数据内容实际长度存储,存储空间小,可以节省存储空间
char按声明大小存储,不足补空格
- 尽量使用数值替代字符串类型
- 查询尽量避免返回大量数据
- 使用explain分析你SQL执行计划,Explain主要看SQL是否使用了索引。
- 优化like语句
- 字符串怪现象,加了""有索引效果,不加就没有
2.JDBC
package cn.tedu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//JDBC的入门案例:
//JDBC是java连接数据库的一个标准,本质上就是一堆的工具类
public class Test1 {
public static void main(String[] args) throws Exception {
//1,注册驱动
Class.forName("com.mysql.jdbc.Driver");//全路径
//2,获取数据库的连接(用户名/密码)
//jdbc连接mysql数据库的协议//本机:端口号/数据库的名字
String url="jdbc:mysql://localhost:3306/cgb2108" ;
Connection c = DriverManager.getConnection(
url,"root","root");
//3,获取传输器
Statement s = c.createStatement();
//4,执行SQL,并返回结果集
String sql="select * from dept" ;//查询dept表的所有数据
ResultSet r = s.executeQuery(sql);//executeQuery执行查询的SQL,executeUpdate执行增删改查的SQL
//5,处理数据库返回的结果
while(r.next()){//next()判断resultset中有数据吗
//getXxx()获取resultset中的数据
int a = r.getInt(1);//获取第1列的 整数值
String b = r.getString(2);//获取第2列的 字符串值
String c1 = r.getString(3);//获取第3列的 字符串值
System.out.println(a+b+c1);
}
//6,释放资源
r.close();//释放结果集
s.close();//释放传输器
c.close();//释放连接器
}
}