临时表

存储过程中临时表删除报错“ORA-00942表或视图不存在”异常处理

橙三吉。 提交于 2020-01-08 21:15:22
Oracle存储过程中涉及到临时表先删后建操作时难免发生“ORA-00942表或视图不存在”这样的错误,个人做法是删除的时候加入异常处理,不抛出表不存在的异常,具体如下: BEGIN BEGIN EXECUTE IMMEDIATE 'DROP TABLE <<Your Table Name>>' ; EXCEPTION WHEN OTHERS THEN IF SQLCODE != - 942 THEN RAISE ; END IF ; END ; EXECUTE IMMEDIATE '<<Your table creation Statement>>' ; END ; 参考地址 来源: CSDN 作者: 且看风去风留 链接: https://blog.csdn.net/github_37764221/article/details/103891487

临时表空间

…衆ロ難τιáo~ 提交于 2020-01-08 16:38:15
数据库 1. 创建临时表空间 create temporary tablespace sacadataviz_temp tempfile 'sacadataviz_datafile01.dbf' size 100m autoextend on next 100m maxsize 4096M extent management local; 2. 创建数据表空间 create tablespace sacadataviz datafile 'sacadataviz_datafile02.dbf' size 100M autoextend on next 100M maxsize 4096M extent management local; 3.创建用户并制定临时表空间和默认表空间 create user sacadataviz identified by sacadataviz default tablespace sacadataviz temporary tablespace sacadataviz_temp; 4.给用户授予权限 grant resource,connect,dba to sacadataviz; grant select any table,execute any procedure,create any procedure,create any

mysql的查询优化

落爺英雄遲暮 提交于 2020-01-07 21:54:44
参考网站: http://www.liyblog.top/p/6 这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。 3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。 4,应尽量避免在 where 子句中使用 or 来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以 使用UNION合并查询: select id from t where num=10 union all select id from t where num=20 5,in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了:Select id from t where num between 1 and 3 6,下面的查询也将导致全表扫描:select id from t where name like ‘%abc%’

mysql的查询优化

半腔热情 提交于 2020-01-07 21:53:12
参考网站: http://www.liyblog.top/p/6 这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。 3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。 4,应尽量避免在 where 子句中使用 or 来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以 使用UNION合并查询: select id from t where num=10 union all select id from t where num=20 5,in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了:Select id from t where num between 1 and 3 6,下面的查询也将导致全表扫描:select id from t where name like ‘%abc%’

提高数据库查询性能浅谈

谁说胖子不能爱 提交于 2020-01-07 10:41:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 c. 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。 d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。 e. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整

MySQL基础篇(04):存储过程和视图,用法和特性详解

China☆狼群 提交于 2020-01-07 01:35:34
本文源码: GitHub·点这里 || GitEE·点这里 一、存储过程 1、概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行。存储过程核心思想就是数据库SQL语言层面的封装与重用性。使用存储过程可以较少应用系统的业务复杂性,但是会增加数据库服务器系统的负荷,所以在使用时需要综合业务考虑。 2、基本语法格式 CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 案例一:计算消费折扣 -- 创建存储过程 DROP PROCEDURE IF EXISTS p01_discount ; CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2)) BEGIN -- 判断收费方式 IF(consume>100.00 AND consume<=300.00) THEN SET payfee=consume*0.8; ELSEIF (consume>300.00) THEN SET payfee=consume*0.6; ELSE SET payfee = consume; END IF; SELECT payfee AS

5.7新特性

微笑、不失礼 提交于 2020-01-06 20:56:01
1. 背景 MySQL 5.7在2015-10-21发布了GA版本,即5.7.9,目前小版本已经到了5.7.12。5.7新增了许多新的feature和优化,接下来一个系列,我们就一起来尝尝鲜。首先这次主要是预览feature的变化以及兼容性问题。后面的系列,会针对重要的feature展开来学习。 2 安全相关的特性 2.1 认证插件 mysql.user表中的plugin更改成not null,5.7开始不再支持mysql_old_password的认证插件,推荐全部使用mysql_native_password。从低版本升级到5.7的时候,需要处理两个兼容性问题。 [兼容性] 需要先迁移mysql_old_password的用户,然后进行user表结构的升级: 1. 迁移mysql_old_password用户 MySQL 5.7.2之前的版本,是根据password的hash value来判断使用的认证插件类型,5.7.2以后的版本,plugin字段为not null,就直接根据plugin来判断了。新的密码从password字段中,保存到新的字段authentication_string中,password字段废弃处理。 如果user是隐式的mysql_native_password。直接使用sql进行变更: UPDATE mysql.user SET plugin =

mysql sys库使用功能

房东的猫 提交于 2020-01-06 20:18:14
MySQL5.7新库sys的一些实用功能 sys schema数据主要源自performance_schema。其目标是把查询performance_schema的复杂度降低,让DBA能更好地利用这个库里的数据,更快地了解MySQL的运行情况。sys schema包含了一些视图、函数和存储过程,sys schema用以帮助DBA及开发更方便的分析定位问题。 那么对于我们DBA来说,sys schema的一些主要用途有哪些? 1、哪个用户或者哪个IP的客户端使用了最多的资源? 2、数据库连接来自哪里,以及这些连接对数据库的请求情况是怎样的? 3、数据库中哪些SQL被频繁执行? 4、哪个文件产生了最多的IO,读多还是写多? 5、哪个表上的IO请求最多? 6、哪个表被访问的最多? 7、哪些语句延迟比较严重? 8、哪些SQL执行了全表扫描或执行了排序操作? 9、哪些SQL使用了临时表,又有哪些SQL用到了磁盘临时表? 10、哪个库/表占用了最多的buffer pool? 11、每个连接分配多少内存? 12、自增长字段的最大值和当前已经使用到的值? 13、索引使用情况如何?有哪些冗余索引和无用索引? 14、内部有多个线程在运行? 下面一一举例说明: 1、哪个用户或者哪个IP的客户端使用了最多的资源? mysql> select * from host_summary limit 1\G **

MySQL基础篇(04):存储过程和视图,用法和特性详解

こ雲淡風輕ζ 提交于 2020-01-06 14:54:40
本文源码: GitHub·点这里 || GitEE·点这里 一、存储过程 1、概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行。存储过程核心思想就是数据库SQL语言层面的封装与重用性。使用存储过程可以较少应用系统的业务复杂性,但是会增加数据库服务器系统的负荷,所以在使用时需要综合业务考虑。 2、基本语法格式 CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 案例一:计算消费折扣 -- 创建存储过程 DROP PROCEDURE IF EXISTS p01_discount ; CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2)) BEGIN -- 判断收费方式 IF(consume>100.00 AND consume<=300.00) THEN SET payfee=consume*0.8; ELSEIF (consume>300.00) THEN SET payfee=consume*0.6; ELSE SET payfee = consume; END IF; SELECT payfee AS

MySQL5.7优化-explain执行计划

[亡魂溺海] 提交于 2020-01-06 14:12:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用explain可以查看优化器如何执行查询的方法,可以看它如何执行sql从而找到查询语句或表结构的瓶颈。 一、简介 1. 通过explain我们可以知道: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 2. 使用方式: explain + sql语句 explain select * from `student`; 其执行结果如下: 二、参数详解 1. id : 表示sql执行顺序,id相同顺序执行,id不同时值越大优先级别越高。 2. select_tyoe : 查询类型一般包括以下值 PRIMARY:包含子查询SQL的主查询,表示最外层 SUBQUERY:包含子查询的SQL的子查询,非最外层 SIMPLE:简单查询不包含子查询或union查询 DERIVED:衍生查询,使用到了临时表 3.table : 索引表,包括子查询临时表 4.partitions : 代表分区表中的命中情况,非分区表,该项为null(mysql5.7新增) 5. type : 类型、索引类型 system:只有一条数据的系统表 const :只有一条数据的系统表,切有主键或唯一索引 eq_ref:唯一性索引,对于每个索引的查询,返回匹配的唯一行数据