Oracle 查询记录是否存在的效率问题

最近要优化Oracle数据库的效率,然后在网上查了很多判断记录是否存在的高效率方法
网上有很多的建议第一种方法,我做了一个测试,但是可能数据量不够大,42667条记录,不知道很大的数据量是什么一个情况

网上好多高效的建议方式

select * from item where item=‘1B241371X0021‘ and rownum<2;

但是我测试的结果:

select * from item where item=‘1B241371X0021‘ and rownum<2;

1 rows selected in 0.047 seconds

count(*) 方式

select count(*) from item where item=‘1B241371X0021‘;

1 rows selected in 0.016 seconds

exists方式

select count(*) from dual where exists(select 1 from item where item=‘1B241371X0021‘);

1 rows selected in 0.015 seconds

从测试的结果看,后两种方式比前一种方式的效率明显要高.

时间: 2024-12-27 22:37:28

Oracle 查询记录是否存在的效率问题的相关文章

oracle 查询当天记录 三种方法效率比较

-- 查询一表中当天生成的数据 -- 原表mobilefrends中的cdate字段上有索引,创建索引语句是:create index mobilefrends_cdate_idx on mobilefrends(cdate); --------------------------------------------------------------------------------------------------------------------- -- 方法一:用to_char()

Oracle查询前10条记录及分页查询(第5条到第10记录)

如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识,希望你在浏览完以下的文章会以下就是正文的详细内容的介绍. 在Oracle怎样查询表中的top10条记录呢? select *   from test   where rownum <=10   下面是关于rownum的介绍 Rownum和row_number() over()的使用 ROWNUM是Oracle从8开始提供的一个伪列,是把SQL出来的结果进行编

ORACLE查询并删除重复记录

查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from people where

JDBC访问Oracle数据库例子源代码,包括创建table,删除table,插入记录,删除记录,查询记录等

package com.cb; public class SMSInfo { public static String ITEMINDEX = "sms_index"; public static String ITEMTO = "sms_to"; public static String ITEMFROM = "sms_from"; public static String ITEMMSG = "sms_msg"; publ

裴东辉-oracle查询一条记录,使用rownum。

oracle查询一条记录,使用rownum   select * from t_wry_jbxx   where  wryjc='PDH' and rownum<=1   order by wrybh DESC; 裴东辉-oracle查询一条记录,使用rownum.

MySQL使用rand 随机查询记录效率测试

以下的文章主要介绍的是MySQL使用rand 随机查询记录效率测试,我们大家一直都以为MySQL数据库随机查询的几条数据,就用以下的东东,其实其实际效率是十分低的,以下就是文章的主要内容. SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低. You cannot use

Oracle 查询今天、昨日、本周、本月和本季度的所有记录

Oracle 查询今日.昨日.本周.本月和本季度的所有记录 字段类型为date 今日 select * from 表名 where to_char(字段名,'dd')=to_char(sysdate,'dd') 昨日 select * from 表名 where to_char(字段名,'dd')= to_char(sysdate-1,'dd') 本周 select * from 表名 where to_char(字段名,'iw')=to_char(sysdate,'iw') 本月 select

Oracle 查询转换之子查询展开

概念:子查询展开(Subquery Unnesting)是优化器处理带子查询的目标sql的一种优化手段,它是指优化器不再将目标sql中子查询当作一个独立的处理单元来单独执行,而是将该子查询转换为它自身和外部查询之间等价的表连接.这种等价连接转换要么是将子查询展开(即将该子查询中的表,视图从子查询中拿出来,然后和外部查询中的表,视图做表连接),要么是不拆开但是会把该子查询转换为一个内嵌视图(Inline View)然后再和外部查询中的表,视图做表连接.Oracle 会确保子查询展开所对应的等价连接

oracle 查询 函数练习2

/*以下代码是对emp表/dept表/salgrade表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hiredate for a12;col sal for 9999;col comm for 9999;col deptno for 99;col dname for a14;col loc for a14;col grade for 9999;col tname for