关于oracle大表分区的一点点心得
蔟表和蔟索引是oracle所提供的一种技术,其基本思想是将几张具有相同数据项、并且经常性一起使用的表通过共享数据块(data block)的模式存放在一起。各表间的共同字段作为蔟键值(cluster key),数据库在访问数据时,首先找到蔟键值,以此同时获得若干张表的相关数据。蔟表所能带来的好处是可以减少I/O和减少存储空间,其中我更看重前者。采用表分区(partition) 表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(sub part
Oracle中表的连接及其调整(2)
二、排序合并连接(Sort Merge) 排序合并连接的方法非常简单。在排序合并连接中是没有驱动表的概念的,两个互相连接的表按连接列的值先排序,排序完后形成的结果集再互相进行合并连接提取符合条件的记录。相比嵌套循环连接,排序合并连接比较适用于返回大数据量的结果。以下为排序合并连接的例子: Roby@XUE> select emp.ename,dept.dname2 from emp,dept3 where emp.deptno=dept.deptno4 /ENAME DNAME---------- -------------- CLARK ACCOUNTINGKING ACCOUNTINGMILLER ACCOUNTINGJONES RESEARCHSCOTT RESEARCHFORD RESEARCHADAMS RESE
Oracle中表的连接及其调整(1)
只有对这些问题有了清晰的理解后,我们才能针对特定的查询需求选择合适的连接方式,开发出健壮的数据库应用程序。选择合适的表连接方法对SQL语句运行的性能有着至关重要的影响。下面我们就Oracle常用的一些连接方法及适用情景做一个简单的介绍。一、嵌套循环连接(Nested Loop) 嵌套循环连接的工作方式是这样的: 1、Oracle首先选择一张表作为连接的驱动表,这张表也称为外部表(Outer Table)。由驱动表进行驱动连接的表或数据源称为内部表(Inner Table)。 2、提取驱动表中符合条件的记录,与被驱动表的连接列进行关联查询符合条件的记
使用DISTINCT消除重复项
distinct的只显示一次重复出更的值。 不过这个值出现多少次只显示一次。 select distinct 字段名1,字段名2 from 表格 order by 字段名1 distinct 字段名1 意思是只显示一次字段名1显示的是第一次出现的。 最好和order by 结合使用。可以提高效率distinct 返回唯一的结果集 注意,是结果集,如果你选了N个字段,当N个字段都相同时 才会被视为相同,而只返加一个 当然,如果N=1的话,情况就会比较明显 此外,distinct 会对返回的结果集进行排序 所以会大大影响查询效率,大数据集时比较明显 select distinct hjrq from T_MIDDLE_HJCG order by hjrq
高效SQL执行的基本概念及基本原则
. SQL基本调整1.1. SQL处理顺序SQL语句处理分两个或三个阶段,每个语句从用户进程传给服务器进程进行分析然后执行。如果是select 语句,则还需要将结果返回给用户。1.1.1. 分析(PARSE)分析是SQL语句处理的第一步。主要进行: 检查语法和根据字典来检查表名、列名。 确定用户执行语句的权限。 为语句确定最优的执行计划。 从SQL区中找出语句。1.1.2. 执行(Execute)Oracle执行阶段执行的是被分析过的 语句。对于UPDATE、DELETE语句,Oracle先锁住有关的行。Oracle还要查找数据是否在数据缓冲区里。如果不在