`
dreamoftch
  • 浏览: 496508 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle 函数 和 优化

 
阅读更多
sql语句中,如果where条件里面含有not, !=, <> ,null ,则即使该字段建有索引,也不会走索引


拷贝表(拷贝数据,源表名:a 目标表名:b) 
insert into b1(a, b, c) select d,e,f from b2; // 表结构已存在的情况下,复制另外的表的数据
create table test as select * from dept; –从已知表复制数据和结构
create table test as select * from dept where 1=2; –从已知表复制结构但不包括数据

 

sign:

select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;  

                1,                -1,             0

大于0的,sign之后返回1,小于0返回-1,等于0返回0

 

“||”操作符:

select ('name' || 'age' || 'address') from dual;

'nameageaddress';

作用相当于concat(concat('name' , 'age'), 'address') from dual;

 

case when then用法:

select (case
             when trunc(sysdate) > to_date('1949-12-22', 'yy-mm-dd') then 'after'
        
             when trunc(sysdate) < to_date('1949-12-22', 'yy-mm-dd') then  'before'
               end) as d
  from dual

 

'after'

 

decode用法:

 

SELECT DECODE(SIGN(5-9), 1, 'Is Positive', -1, 'Is Negative', 'Is Zero')FROM DUAL

 

‘Is Negative’;

 

sign(5-9)为sign(-4),所以结果为-1,所以是‘Is Negative’;

 

DDL:  alter,drop,truncate,create

 

DML:add,update,delete(select不是);
 

 

 

Sql语句的调整和优化。
最重要的一个原则就是在查询大数据量表的时候,表结构是否已经建立了索引,并且建立的索引是否正确。
1、在有索引的表上执行DML操作性能会变慢,因为同时要往表和索引插入数据。

2、当表中如果有组合索引时,如create index idx_tables on t_user_info(id,name,address);
   使用select语句进行查询时,where条件中一定要用到前导引,这样oracle才能用到该索引进行扫描,否则就进行全表扫描。

3、索引只能用于查找表中已经存在的数据。如果查询语句中有<>或!=的时候,oracle同样不会用到索引。解决方案:可以用 where t.name>'huangyun' or t.name<'huangyun'

4、避免使用is null或者 not null。使用技巧:null关键字通常会限制使用索引,所以在create table的时候尽量使用not null或者default,这样可以避免出现性能的问题。

5、多表查询的时候,选择最有效的表名顺序。
   ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table),将被最先处理.在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.

6、WHERE子句中的连接顺序
   ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.    
7、SELECT子句中避免使用 ‘ * ‘ 
   因为在使用*的时候,oracle会对这个*进行解析,会对*依次转换成所有的列名。这个过程是查询数字字典完成的。
   
8、最高效的删除重复记录:
   DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
   
9、用EXISTS替代IN ;使用NOT EXISTS替代NOT IN 
   低效:SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB') 
   高效:SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB') 

10、识别'低效执行'的SQL语句 
   SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
   SQL_TEXT FROM V$SQLAREA WHERE EXECUTIONS>0 AND BUFFER_GETS > 0 AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8 ORDER BY 4 DESC; 

11、用EXPLAIN PLAN 分析SQL语句
   通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 

12、WHERE子句中, 如果索引列所对应的值的第一个字符由通配符(WILDCARD)开始, 索引将不被采用. SELECT LODGING FROM LODGING WHERE MANAGER LIKE ‘%HANMAN';--在这种情况下,ORACLE将使用全表扫描.
		
13、 索引的类型有: B-树索引,位图索引,hash索引,索引编排表,反转键索引,基于函数的索引,分区索引,本地和全局索引。 B-树索引是oracle中的通用索引,也是oracle中的默认索引,当创建索引时如果不指定特定的索引类型,oracle则默认的是B-树索引。B-树索引可以一个列上的索引,也可以是多列上的索引,但指定的列不能超过32列。索引只能在有值的列上有作用。

 

 

分享到:
评论

相关推荐

    oracle函数大全(CHM格式).rar

    总之,这个CHM文件是Oracle数据库开发者和管理员不可或缺的参考工具,它将帮助我们更好地理解和应用Oracle函数,从而优化我们的数据库操作,提高工作效率。对于初学者和经验丰富的专业人士来说,都是一个宝贵的资料...

    oracle性能优化、函数大全、傻瓜問題

    二、Oracle函数大全 Oracle数据库中包含大量的内置函数,涵盖数值、字符串、日期、集合、系统等各类操作: 1. 数值函数:如ROUND、TRUNC、MOD等用于数值处理。 2. 字符串函数:如SUBSTR、INSTR、UPPER/LOWER、...

    oracle优化篇及常用函数

    首先,Oracle优化主要包括SQL优化、索引优化、存储优化和架构优化。SQL优化是最基础的,通过编写高效的SQL语句,减少数据访问和处理的时间。这通常涉及到查询优化器的选择,使用适当的JOIN、WHERE子句,以及避免全表...

    ORACLE函数大全与整理

    "函数整理.doc"和"ORACLE函数大全.doc"这两个文档应该包含了Oracle函数的详细说明、示例和应用场景,是学习和查阅Oracle函数的宝贵资料。通过深入学习这些函数,开发者可以更高效地编写SQL查询,优化数据库操作,...

    oracle函数大全中文api文档

    "Oracle函数大全中文API文档"是一个非常实用的资源,它提供了对Oracle数据库所有内置函数的详尽解释,帮助开发者和DBA快速理解和使用这些函数。 1. **日期与时间函数**: Oracle提供了处理日期和时间的大量函数,...

    oracle函数速查手册

    总的来说,Oracle函数速查手册是数据库管理员、开发人员和数据分析者的得力助手,通过学习和查阅,可以快速解决在处理Oracle数据库时遇到的问题。无论是进行数据查询、更新,还是进行复杂的数据分析,掌握Oracle函数...

    oracle函数大全(word+chm双版本)

    首先,`oracle函数大全.doc`是Word文档格式,它通常以易于阅读和打印的方式呈现内容。这种格式适合那些喜欢传统纸质阅读或需要离线参考的用户。文档可能涵盖了各种函数类别,如数学函数、字符串函数、日期时间函数、...

    ORACLE CRC32函数

    ### ORACLE CRC32函数详解 #### 一、概述 在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成...

    oracle常用函数和类型

    BINARY_INTEGER是Oracle中用于整数计算优化的类型,而DEC、DOUBLE PRECISION、INTEGER、INT、NUMERIC和REAL都是NUMBER类型的子类型,其中DOUBLE PRECISION提供了更高的精度,而REAL和NUMERIC等同于NUMBER。...

    Oracle资料 Oracle九阴真经 Oracle函数大全 Oracle错误码 Oracle参考手册 Oracle全套chm.7z

    本压缩包“Oracle资料 Oracle九阴真经 Oracle函数大全 Oracle错误码 Oracle参考手册 Oracle全套chm.7z”包含了丰富的Oracle学习资源,帮助用户深入理解并掌握Oracle的相关知识。 1. **Oracle九阴真经**:这是对...

    三思笔记之oracle函数

    通过阅读“三思笔记”中的相关内容,DBA们可以系统地学习Oracle函数的用法,从而更好地应对日常的数据库挑战。无论是处理数据转换、分析大量数据还是解决特定问题,这些函数都能提供强大的工具支持。因此,深入理解...

    Oracle10G函数大全(chm格式的,比较全面)

    Oracle 10G是Oracle数据库的一个重要版本,它包含了丰富的函数和特性,为数据库管理和开发提供了强大的支持。本文将深入探讨Oracle 10G中的一些关键函数,旨在帮助你更好地理解和利用这些工具。 1. **数学函数**: ...

    Oracle函数列表速查andOracle数据字典

    本资料主要涵盖了两个核心方面:Oracle函数列表速查和Oracle数据字典。 首先,Oracle函数列表速查是数据库管理员和开发人员日常工作中不可或缺的工具。Oracle数据库提供了丰富的内置函数,用于处理各种数据类型,...

    Oracle字符相似度函数

    Oracle提供了多个字符相似度函数,其中最常用的包括`SIMILARITY()`和`UTL_MATCH`包中的几个函数,如`JARO_WINKLER()`, `EDITDISTANCE()` 和 `SIMILARITY()`。 1. **SIMILARITY()** 函数: 这个函数基于Jaccard...

    《基于Oracle的SQL优化》PDF版本下载.txt

    8. **利用Oracle的内置函数**:Oracle提供了一系列内置函数来帮助优化查询,如DECODE、CASE WHEN等,这些函数可以帮助简化复杂的逻辑判断。 ### 实践案例 假设有一个订单表(Order),其中包含大量的订单信息。为了...

    Oracle_SQL优化脚本_完整实用资源

    Oracle SQL优化是数据库管理员和开发人员提升系统性能的关键技能之一。这个"Oracle_SQL优化脚本_完整实用资源"压缩包包含了一系列工具和方法,旨在帮助你优化在Oracle数据库上运行的SQL查询,从而提高数据库的响应...

    Oracle 递归函数介绍

    Oracle 递归函数介绍 Oracle 递归函数是一种特殊的PL/SQL函数,可以用于解决复杂的树形结构查询问题。递归函数可以自我调用,以便遍历树形结构的...因此,在使用递归函数时,需要小心设计和优化,以确保性能和可读性。

    Oracle常见函数集锦

    通过学习和实践提供的SQL脚本,如“汇总报表开发过程学习研究.sql”和“分析sql.txt”,可以进一步加深对Oracle函数的理解和应用。 在日常工作中,可以结合各种工具,如SQL Developer、Toad等,来编写、测试和优化...

    Oracle数据库索引优化方法探析.pdf

    Oracle 数据库索引优化方法探析是指通过对 Oracle 数据库索引的分析和优化,以提高数据库的查询效率和性能。 Oracle 数据库索引是一种数据结构,用于快速访问数据库表的特定信息。通过索引的小 I/O 操作可以替代大的...

    oracle 函数文档

    在Oracle函数文档中,我们通常会找到关于如何利用这些函数进行数据操作、查询和分析的详细信息。这篇文档可能涵盖了从基本的算术运算到复杂的字符串处理、日期时间操作、逻辑判断以及聚合函数等多个方面。 1. **...

Global site tag (gtag.js) - Google Analytics