oracle查询速度会因具体的条件变慢

问题描述

oracle查询速度会因具体的条件变慢

select语句的结构完全一样,只是把其中一条where条件由='TCP14'改为='TCP17',
查询速度就由原来的瞬间变成3秒。我查看了TCP14下数据量和TCP17下数据量是差不多的。
请问原因和解决办法

解决方案

这个原因很多,cbo优化器根据代价来计算取最优的方式,你的这个问题可以把执行计划贴上来看看,原因的话很多可能,举个简单的,假如你的表存在10个数据块上,t14的数据存在前2个块上,而t17的数据分别存在第一个块,中间一个块,最后一个块上,那这两种的执行计划很可能就是一个走索引一个走全表扫描

解决方案二:

这个可能与你执行时的环境有关,你再多执行几次看看区别。
按理这个条件的改变不会影响select执行效率的

解决方案三:

这个要看多个方面 可能是执行的时候系统的压力, 还有索引的深度 以及 ='TCP17'这个条件返回的记录数

时间: 2024-09-29 18:50:28

oracle查询速度会因具体的条件变慢的相关文章

服务器-oracle千万级查询速度问题

问题描述 oracle千万级查询速度问题 一个2.3w的服务器,现有数据1500w左右,按月分区,大约有10几个分区. 查询两个一个上月的数据,查询时间在100s多,客户直接受不了了,是否可以秒开? 如何优化? 解决方案 为什么要一次性返回全部数据呢?那样当然慢,可以分页.另外,你是怎么查询的,有没有对条件加上索引. 解决方案二: 把一些常用数据放cache,内存中.查询数据库就刷新内存.这样只有第一个慢. 解决方案三: 你可以利用oracle的分批次查询,比如:SELECT * FROM (

Oracle中利用哈希函数提高查询速度

oracle|函数|速度 当数据存储在一个普通表中的时候,这些记录将以插入到数据库时的顺序物理地保存到分配的块中.例如,如果有一个用于存储员工信息的表,那么员工姓名将会按照插入到表的顺序存储在表中. 如果员工记录非常多的话,那么数据表的响应速度就会逐渐变慢.你可以通过选择值相对等分布的一列(如员工的部门编号)并建立一个簇表来提高查询员工的速度. 在簇表中,如果员工属于同一个部门,那么它们的记录将物理地存储在同一系列的块中.这样就可以提高查找员工信息的速度,这是因为在检索某个特定部门的员工时,需要

Oracle临时表 优化查询速度

oracle|临时表|速度|优化 1.前言    目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量.当然在Oracle中创建分区是一种不错的选择,但是当你发现你的应用有多张表关联的时候,并且这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在Oracle中创建"临时表".    我对临时表的理解:在Oracle中创

视图语法-用oracle创建一个视图,根据不同条件查询不同的内容。

问题描述 用oracle创建一个视图,根据不同条件查询不同的内容. 我现在需要创建一个视图A,视图里面是三个视图BCD,根据一个页面传来的值判断不同的值查询不同的视图,这个值不少表中的字段.语法该怎么写?大神们帮帮忙啊!! 解决方案 比方说传来的值是E,1查询B,2查询C,3查询D CREATE OR REPLACE A_V SELECT * FROM B WHERE E = 1 UNION SELECT * FROM C WHERE E = 2 UNION SELECT * FROM D WH

oracle 查询 数据量大 速度很慢

问题描述 具体需求是这样的:查询库存(库存实时变动的,变动不频繁可以用物化视图,但是实际很频繁),建立视图查询速度很慢,虽然能查出来但是速度真的好慢,客户抱怨了好多回了.请教下诸位有什么好办法没 解决方案 1)首先要确定是不是数据量大造船的,检查方法在原有SQL条件下面缩小范围,比如以前查1个月,现在查一分钟.以前查1W商品,现在查10个商品. 2)如果小数据查询也慢,那就缩小范围了,优化索引,不仅仅是简单数据量大造成的.3)如果小数据查询快,大数据查询慢,并且几乎是线性的. 那么几乎是无解吧,

SQL Server访问Oracle查询性能问题解决

1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT*FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME WHERE CO

SQLServer访问Oracle查询性能问题解决

原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT * FROM LINKED_NAME..A

Oracle查询语句中rownum与rowid的不同之处分析_oracle

本文主要是以实例形式介绍了Oracle查询中rownum与rowid的不同之处,以及以假设的方式为例,查询条件为rownum = 2,在查询出第一条记录时的具体内容的介绍. 在查询中,我们可以注意到,类似于 select xx from table where rownum < n (n>1) 这样的查询是有正确含义的,而 select xx from table where rownum = n 这样的查询只在n=1的时候成立, select xx from table where rown

提高数据库查询速度的几个思路

提高数据库查询速度的几个思路 :1.缓存,在持久层或持久层之上做缓存;2.数据库表的大字段剥离,保证单条记录的数据量很小; 3.恰当地使用索引;4.必要时建立多级索引; 5.分析Oracle的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描; 6.表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表.分库)还是无业务含义的分区(如根据ID取模分区);7.RAC;8.字段冗余,减少跨库查询和大表连接操作; 9.数据通过单个或多个JOB生成出来,