emp

SQL优化很难怎么办?给你一个简单暴力的办法

走远了吗. 提交于 2019-12-05 13:53:46
今天给大家带来一个比较简单SQL优化案例,来分析一下开发人员经常感到不解一个问题——视图合并导致的SQL变慢 例如: 一个运维人员(这里的运维指的是,在现有的系统上,进行稍微修改) 因为业务上的改变,在原有的SQL上添加了一个条件,结果原来运行很快的SQL有可能变慢,甚至会发生time out (当然导致这种情形的原因很多,种类也比较多)这里只讨论一种情况即视图合并导致的SQL变慢。 本文讲的只是一种情况,若想从根本上解决这类问题,需要熟练掌握执行计划。 CREATE TABLE `salaries09` ( id bigint not null auto_increment primary key , `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, KEY ix_t1 (`emp_no`,`from_date`), KEY `emp_no` (`emp_no`), KEY `from_date` (`from_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 有如上表和数据,原来的运行的SQL 如下 select * from ( select * from salaries09

数据仓库009 - SQL命令实战 - where GROUP BY join 部门综合案例

依然范特西╮ 提交于 2019-12-05 12:33:44
一、where条件 WHERE 子句中主要的运算符,可以在 WHERE 子句中使用,如下表: 运算符 描述 = 等于 <> 不等于。 注释: 在 SQL 的一些版本中,该操作符可被写成 != > 大于 < 小于 >= 大于等于 <= 小于等于 BETWEEN 在某个范围内 LIKE 搜索某种模式 IN 指定针对某个列的多个可能值 二、SQL GROUP BY 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name; 三、SQL连接查询   1、左、右和内连接的图示:      2、join查询   1)、左连接:join的左连接查询,以左边的表为主,为全;右表是匹配的,匹配到就显示,匹配不到就null select a.*,b.* from a left join b as bb on a.id=b.id 输出结果:      2)、右连接:右连接,以右边的表为主,为全;左表是匹配的,匹配到就显示,匹配不到就nul1 select a.*,b.* from a right join b on a.id=b.id;      3)、内连接:内连接,根据id关联,两张表数据都存在的显示

oracle函数 存储过程 包 动态sql的练习

笑着哭i 提交于 2019-12-05 12:28:49
ORDERS表字段为order_id, order_date, customer_id, ship_date, total;数据来自oe.orders,主键为order_id CUSTOMERS表字段为customer_id, cust_first_name, cust_last_name, date_of_birth, marital_status, cust_email,city_name数据来自oe.customers,主键为customer_id ORDERS表与CUSTOMERS为多对1关系,需要用建立朱外键约束关系。 分析:因为orders外键依赖于customers的主键所以建表和插入数据时以customers为先 //创建customers表 create table customers (CUSTOMER_ID NUMBER(6) NOT NULL primary key , CUST_FIRST_NAME VARCHAR2(20) NOT NULL, CUST_LAST_NAME VARCHAR2(20) NOT NULL , DATE_OF_BIRTH date , MARITAL_STATUS VARCHAR2(20), CUST_EMAIL VARCHAR2(30), city_name varchar2(50) default 'luoyang'); /

mysql学习笔记

*爱你&永不变心* 提交于 2019-12-05 12:17:03
mysql学习笔记 1.mysql的启动和关闭 启动mysql服务: # service mysql start 重启mysql服务: # service mysql restart 关闭mysql服务: # service mysql stop 连接到mysql服务器: $ mysql -uroot -proot 2.sql基础 1>DDL语句 创建数据库: mysql> create database test1; 查看数据库: mysql> show databases; 选择数据库: mysql> use test1; 查看所有表: mysql> show tables; 删除数据库: mysql> drop database test1; 创建表:   mysql> create table emp(ename varchar(10),hiredate date, sal decima(10,2),deptno int(2)); 查看表:   mysql> desc emp; 查看创建表的sql语句: mysql> show create table emp \g; 删除表:   mysql> drop table emp; 修改表的字段类型:   mysql> alter table emp modify ename varchar(20); 增加表字段:     

Oracle11g学习-TCL事务控制语言

痞子三分冷 提交于 2019-12-05 12:12:26
Oracle 1 TCL事务控制语言 1.1 提交 事务的提交比较简单;直接在执行DML语句后进行提交即可,如果不提交事务则刚刚通过DML语句进行修改的内容还未保存到数据库中,只在当前用户的连接会话中有效。要永久变更数据需要显示地执行提交、回滚或者退出当前回话(如退出sqlplus)。 提交的命令为:commit; 1.2 保存点与回滚 保存点savepoint一般与回滚rollback配合使用。在设置了savepoint后事务的粒度可以控制的更加细化,可以回滚到特定的保存点。 【语法】保存点savepoint SAVEPOINT <savepoint_name>; 【示例】 --创建一个保存点,名称为a savepoint a; 【注意】当创建保存点之后执行的DML操作,可以进行回滚,而保存点之前未提交的DML操作不受影响。 【语法】回滚 ROLLBACK [TO savepoint]; 【示例】 --回滚到保存点a,即在保存点a之后的所有未提交的DML都无效。 rollback to a; /*保存点与回滚完整示例*/ --1 、创建保存点a Savepoint a ; --2 、插入emp 数据 it1 Insert into emp ( empno , ename ) values ( 1234 , 'it1' ); --3 、创建保存点b savepoint b ; -

mysql基础笔记--day02

两盒软妹~` 提交于 2019-12-05 11:49:24
/* 回顾: DDL create drop DML insert update delete DQL select a,基本查询 b,条件查询 where c,排序 order by d,分组 group by e,分组后的过滤 having f,字段的控制 distinct 别名... */ -- 分页查询 /* 在实际的Web开发中有可能一页的数据太多,不能够 在一页展示,如果展示也可能造成性能的丢失,所以为 了提高用户的体验,我们可以数据分页的显示在web 页面上。实际开发中分页分为2种 一种为 真分页 数据库采用了分页查询 假分页 数据库没有采用分页查询,而是在服务端对数据 进行处理。 limit 注意 这个不是SQL标准,只能在mysql中使用。 limit 参数1,参数2 1-- 从第几条开始 从0开始 2-- 改页的条数 */ USE java1711; -- 每页4条记录 第一页 SELECT * FROM emp LIMIT 0,4; -- 每页4条记录 第二页 SELECT * FROM emp LIMIT 4,4; -- 当前页-1 * 每页的条数 -- 每页4条记录 第三页 SELECT * FROM emp LIMIT 8,4; -- 每页4条记录 第四页 SELECT * FROM emp LIMIT 12,4; SELECT * FROM emp

MYSQL操作之DML和DQL

こ雲淡風輕ζ 提交于 2019-12-05 11:45:16
DML是对表中的数据进行增、删、改操作:insert update delete 小知识:1)在mysql中,字符串类型和日期类型都要用单引号括起来,'tom' '2015-09-04' 2)空值类型有两种 : null==不占内存 " "==占内存 3)查看数据库编码的具体信息 Show variables like 'CHARACTER%'; 4)临时更改客户端和服务器结果集的编码 SET character_set_client=utf8; Set character_set_results=utf8; 一、准备工作(一) 1.创建数据库 CREATE DATABASE mydb1; 2.创建emp表: create table emp( id int, name varchar(10), gender varchar(10), birthday date, salary float(10,2), entry_date date, resume text ); 3.插入数据 INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','good girl'); INSERT INTO

Mysql 学习整理

左心房为你撑大大i 提交于 2019-12-05 11:26:05
1 创建数据库 1.1数据库基本结构   数据库:数据库是表的集合,带有相关的数据。   表:一个表是多个字段的集合。   字段:一个字段是一列数据,由字段名和记录组成 1.2创建数据库   create database 数据库名称;     例:创建名为test的测试数据库       create database test; 1.3查看创建好的数据库:   show create database 数据库名称;     例: 查看创建好的test数据库       show create database test; 1.4查看所有数据库列表:show databases; 1.5 使用数据库:   use 数据库名称;     例: 使用创建好的test数据库       use test; 1.6 删除数据库:   drop database 数据库名称;      例: 删除创建好的test数据库        drop database test; 2   创建数据表   – 数据库是由多个数据表构成的   – 每张数据表存储多个字段   – 每个字段由不同的字段名及记录构成,每个字段有自己的数据结构及约束条件 2.1 创建数据表:   create table 表名(…);   – 例:用SQL语句创建以下员工信息表   1. 使用test数据库: use

学习笔记——day22(DML单表查询语句)

 ̄綄美尐妖づ 提交于 2019-12-05 11:20:29
DML -- 这是注释 /* 这是多行注释 ## mysql中的注释 */ 注释 单表查询语句 -- 查询 sql 查询emp表中的所有列 /* * 代表所有列 select * from 查询表 */ select * from emp; -- 查询emp表中的员工姓名员工工资以及员工的部门编号 /* 查询列:姓名ename 工资sal 部门编号deptno 查询表:emp */ select ename,sal,deptno from emp; -- 别名 给列起别名 as可以省略 -- 通常建议使用 "" 引起来 "" 原样输出 -- ''引起来的称之为字符串 select ename as "姓 名",sal ,deptno from emp; select ename "姓 名",sal ,deptno from emp; -- 查询员工的工资,并且查看工资涨幅10%之后的员工工资 -- 列是支持四则运算 select ename "姓名", sal "工资",sal*1.1 "涨幅工资" from emp; -- 查询员工的姓名以及员工的年薪 -- (工资+奖金)*12 -- 参与四则运算时 如果列包含null值 那么最后的结果也是null select ename "姓名",sal "月薪", comm "奖金",(sal+comm)*12 "年薪" from emp

数据库连接池_C3P0+Druid+Template_笔记

风流意气都作罢 提交于 2019-12-05 11:08:11
一、C3P0    C3P0:数据库连接池技术 * 步骤: 1. 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar , * 不要忘记导入数据库驱动jar包 2. 定义配置文件: * 名称: c3p0.properties 或者 c3p0-config.xml * 路径:直接将文件放在src目录下即可。 3. 创建核心对象 数据库连接池对象 ComboPooledDataSource 4. 获取连接: getConnection * 代码: //1.创建数据库连接池对象 DataSource ds = new ComboPooledDataSource(); //2. 获取连接对象 Connection conn = ds.getConnection(); 二、Druid   1. 步骤: 1. 导入jar包 druid-1.0.9.jar 2. 定义配置文件: * 是properties形式的 * 可以叫任意名称,可以放在任意目录下 3. 加载配置文件。Properties 4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory 5. 获取连接:getConnection * 代码: //3.加载配置文件 Properties pro = new Properties();