上周我写了一篇博文,里面有一点关于分区表的论述(http://www.cnblogs.com/wingsless/archive/2012/02/04/2338292.html)。但是我发现我少写了一点,在你的查询条件和分区列没有太大关系的时候,分区表不会帮助你提高效率。
图1
图2
我是按照area_id分区的,图1的执行计划:
图2的执行计划:
建立一张表,这张表的数据和test一样,但是没有分区,执行一下图1中的语句,查看其执行计划:
可以明显的看出来,分区表的执行计划多了一个PARTITION LIST ALL,明显增加了CPU的耗用。再看看图2中SQL在test111中执行的执行计划吧:
确实很明显,这里少了PARTITION LIST SINGLE,但是CPU的耗用却没有变,当然了,我这个表非常非常小,如果数据量超过千万级,那么就能看出好处了。
从上述对比中可以很明显的看出来,分区表的使用是要看实际应用的需求的。如果存储过程始终是按照某一条件对数据进行查询,就像是图2中那样,每次查询的时候总是要带上area_id,那么建表的时候就可以考虑按照area_id进行分区。但是如果你平时的查询没有什么规律可循,那么你分区了,也许好心办坏事。
为了这篇博文,小弟在此豁出去了,不停地插表,现在搞出了一张3145728的test表和test111表,两个表数据一样,test有分区,test111没有。再看看执行计划,首先是SQL:
SELECT * FROM TEST a WHERE a.item_id = 1
AND a.area_id = 290;
SELECT * FROM TEST111 a WHERE a.item_id = 1
AND a.area_id = 290;
然后是执行计划:
1
2
看看,用了分区表之后虽说CPU的COST增加了,但是ROWS和BYTES都有了十分可观的降低。再将表扩大一倍,分区表和非分区表的ROWS比达到了2159K:10M,而BYTES比也达到了 121M:594M,CPU COST比:14487:8847。上帝啊,分区表在降低读取量方面堪称出色,但是在增加CPU COST方面堪称令人发指。
以前看过盖国强的书,里面说优化SQL主要是降低其物理读。但是我想如果能降低这里的ROWS和BYTES,对于一个小机环境的数据库处理器来说,高一点的CPU COST也是可以理解的吧。
有什么不妥之处,请大家留言指正。
发表评论
-
简介如何查看执行计划以及执行计划的准确性
2012-02-24 20:52 0很多朋友都问过我优化SQL的事情。我觉得在我不 ... -
一周以来遇到的问题和经验(oracle)
2012-02-18 22:23 958很久以前,在我还在X唐电信的时候,我被领导要 ... -
对WITH和from(select ...)的一点比较
2012-02-04 21:24 794在之前的工作中,我曾经遇到过表特别大的 ... -
使用WITH提高查询效率
2012-01-15 21:02 1174前两天的业务 ... -
好用的函数sign和decode
2012-01-08 00:11 843今天遇到了一个问题,需要对比一个字段和5的大 ... -
有关LGWR
2011-12-28 21:37 979今天群里有人问关于数据库进程的事情,当然,他对 ... -
安装oracle时还需要修改的几个文件和参数
2011-12-24 23:31 963安装oracle时还需要修改的几个文件和参数: /et ... -
关于oracle的启动
2011-12-24 22:51 634有这么一道题,是关于在实例启动的时候,哪些 ... -
实用语句之一——Oracle建立Database Link
2011-12-18 12:56 873create database link dblink_ ... -
Oracle控制文件的一点研究
2011-12-13 23:15 676控制文件是非常重要的文件,实例读取控制文件才 ... -
SQL语句的执行过程
2011-12-13 21:20 807服务器接收到SQL语句之后,要经过如下步骤完成操作:P ... -
OCP题库笔记1z0-052
2011-12-12 23:24 11131 关于undo 数据库可以有一个以上的undo表空间; ... -
有关nologging和append提高插入效率的研究
2011-12-11 10:39 2115那天接到一个事情,我们的数据库表空间已经快用完 ... -
计算索引碎片的一个脚本
2011-12-11 10:36 623今天在网上看到了一个估计索引碎片的方法,所以写了个小 ... -
索引不可用的情况
2011-12-11 10:35 743有一天我遇到了一个同事的求助,他让我帮忙优化一个SQ ... -
如何理解oracle实例(instance)和数据库(database)的概念
2011-12-11 10:34 730今天群里有朋友问什么是instance,什么是data ...
相关推荐
假设表名为employees,store_id字段的值从1到20,可以创建如下的RANGE分区表: ```sql CREATE TABLE employees_range ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT ...
数据表的物理分区是一种有效的管理策略,尤其是对于包含大量数据的表。通过按特定字段分区,可以针对部分数据进行快速查询,避免全表扫描,从而显著缩短查询时间。此外,将不同分区的数据分散在多个磁盘上,可以...
7. 分析并调整表分区:对于大型表,分区可以显著提高查询速度和管理效率。 8. 调整初始化参数:根据系统资源和工作负载调整Oracle的初始化参数,如缓存大小、排序区大小等。 9. 使用EXPLAIN PLAN分析查询:通过...
首先是安装路径的选择,应该把应用程序安装路径和数据库数据文件安装路径分开,推荐将应用程序安装在默认的C盘,而将数据文件放在非系统盘的其他分区,这有助于提高数据安全性。其次,在选择许可模式时,需要根据所...
元数据可以描述系统表格、分区设置、索引、视图定义和权限管理等项目内容,为数据仓库的建设和管理提供支持。 维度表作为进入事实表的入口,其质量和深度直接关系到数据仓库的整体性能。维度表包含了业务的文字描述...
此外,考虑数据库的架构设计,如合理的数据分区和索引,也是提升性能的重要手段。 为提高网站的可用性和可扩展性,通常会采用集群技术。最简单的集群策略是通过DNS轮询,将多个A记录分配给同一个域名。商业解决方案...
4.2.4.2 分区表最实用的特性 165 4.2.4.3 分区索引类型简述176 4.2.4.4 分区表之相关陷阱177 4.2.5 有趣的索引组织表 184 4.2.6 簇表的介绍及应用 187 4.3 理解表设计的你成为项目组英雄 189 第5章惊叹,索引天地...
膜结构建筑作为一种现代建筑技术,以其独特的美学设计和广阔的...这份“膜结构建筑防火安全技术初探”文档,将深入剖析这些技术和实践案例,对于从事膜结构建筑设计和施工的专业人士来说,是一份极具价值的参考资料。
以下是关于znFAT和FAT32文件系统的详细知识点: 1. **FAT32文件系统概述**:FAT32是一种广泛使用的文件分配表(File Allocation Table)文件系统,由微软开发,主要用于存储和组织硬盘、闪存驱动器等存储设备上的...
《ArcSDE for Oracle配置与调整初探》 ArcSDE是Esri公司推出的一款用于在关系数据库管理系统(RDBMS)中存储、管理和分发地理空间数据的中间件。Oracle作为全球广泛使用的数据库系统,与ArcSDE的结合使得大规模的...
5. **k-DTree**:一种多维空间分区的数据结构,常用于快速查询和近邻搜索。 #### 六、动态规划 1. **概率DP**:将概率引入动态规划模型中,用于处理具有不确定性的决策过程。 2. **期望DP**:基于期望理论的动态...
44 网吧维护\资料\XP下FAT分区转NTFS分区.TXT 484 网吧维护\资料\XP中不能正常IE浏览不正常一例.TXT 10790 网吧维护\资料\XP优化.TXT 3638 网吧维护\资料\xp实用技巧\Win XP 键盘快捷键概述.txt 5851 网吧维护\资料\...