Oracle 的 char number varchar2 效率测试

自己在建表的时候,用到了编号的这个字段,

主要问题是要用java连接数据库,所以要有pojo类,

就像 编号 这种字段,int 不够,long 转起来麻烦,还容易出错。


突然想看看char可不可以,所以就稀里糊涂的想看看,这几种数据类型的查找效率究竟如何。


--首先总要先建立一张表吧(如果有重复的话,先删掉...)
drop table yard_test;
create table yard_test (yrd_id char(32),yrd_num number,yrd_var varchar2(32),into_time date,yrd_txt varchar2(4000)
);--必然要有需要的数据类型 char number varchar2--下面可以插入数据了,建一个plsql语句块,执行一下就可以。
declarev_temp yard_test%rowtype;v_begin_time timestamp := systimestamp;v_end_time timestamp;v_all_time timestamp;
begin
for i in 1..100 loop--每一万条数据提交一次,总共提交100万次,其实有点多,我都没耐性等他插入完成就......for j in 1..10000 loopv_temp.yrd_id := sys_guid();v_temp.yrd_var := sys_guid();select nvl(max(yrd_num),0)+1 into v_temp.yrd_num from yard_test;--本来应该用sequence的,嫌麻烦,直接用select语句取得max值+1 得到了序号...v_temp.yrd_txt := substr(sys_guid(),1,1);insert into yard_test values(v_temp.yrd_id,v_temp.yrd_num,v_temp.yrd_var,systimestamp,v_temp.yrd_txt);v_end_time := systimestamp;v_all_time := v_all_time + (v_end_time - v_begin_time);--插入数据end loop;commit;dbms_output.put_line(v_all_time);
end loop;
dbms_output.put_line(v_all_time);
end;--好了,可以看看都插入了写什么数据,
select * from yard_test;--下面开始测试
declarev_beg timestamp;--一定要记好开始时间v_end timestamp;--和结束时间v_times number := 100000;
begin--测试查找第50000条数据的速度v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_num = 50000';--用execute直接运行sql语句,这里是通过number查找数据end loop;v_end := systimestamp;dbms_output.put_line('number 查询时间 ' || (v_end-v_beg));v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_id = ''4A6585C231B64BD1B5A981EDD8079990''';end loop;v_end := systimestamp;dbms_output.put_line('char 查询时间 ' || (v_end-v_beg));v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_var = ''18C00CA4677E4BF388BD9F3891BBACA0''';end loop;v_end := systimestamp;dbms_output.put_line('carchar2 查询时间 ' || (v_end-v_beg));
end;



其实在网上我也发现有其他同学做的测试,结论也都一样...

都是 char 效率最高,number 其次,最慢的是varchar2,差的也不大,也都能接受。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战:Redis 慢查询

Redis 慢查询作用和 MySQL 慢查询作用类似,都是为我们查询出不合理的执行命令,然后让开发人员和运维人员一起来规避这些耗时的命令,从而让服务器更加高效和健康的运行。对于单线程的 Redis 来说,不合理的使用更是致命的,因此掌握 Redis 慢查询技能对我们来说非常的关键。 …

Java SecurityManager checkAccess()方法与示例

Syntax: 句法: public void checkAccess (Thread th);public void checkAccess (ThreadGroup tg);SecurityManager类的checkAccess()方法 (SecurityManager Class checkAccess() method) checkAccess(Thread th) method is called for the current security manage…

算法复习第四章动态规划

算法复习第四章动态规划动态规划TSP问题0-1bag动态规划 TSP问题 0-1bag 最长公共子序列不考:

4. 星际争霸之php设计模式--工厂方法模式

题记本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦! 本文地址:http://www.cnblogs.com/davidhhuan/p/4248177.html PHP手册上提到的工…

Oracle 建立序列以及触发器的建立

笔记系列 序列:序列的创建方法,以及插入数据时的使用; --序列的创建 create sequence sq increment by 1 start with 1 maxvalue 10 minvalue 1 cycle cache 5--一般(一个序列可以用在多张表,但是一般情况下,一张表对应…

实战:Redis 性能测试

为什么需要性能测试? 性能测试的使用场景有很多,例如以下几个: 技术选型,比如测试 Memcached 和 Redis;对比单机 Redis 和集群 Redis 的吞吐量;评估不同类型的存储性能,例如集合和有序集合;对比开启持久化和关闭持久化的吞吐量;对比调优和未调优的吞吐量;对比不同 R…

操作系统Ubuntu(实验三四)

实验三四3._实验三:Linux进程/线程的异步并发执行3.1_fork()函数创建子进程3.2_创建线程pthread_create();4._实验四:使用信号量进行互斥与同步4.1_信号量初使用(1)信号量简单介绍(2)信号量以及P、V操作的使…

Java RandomAccessFile writeShort()方法与示例

RandomAccessFile类writeShort()方法 (RandomAccessFile Class writeShort() method) writeShort() method is available in java.io package. writeShort()方法在java.io包中可用。 writeShort() method is used to write the short value to the file as 2 bytes directly wi…

js中cookie的使用详细分析

cookie概述 cookie 是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是 存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览…

实战:Redis哨兵模式(上)

上一篇我们讲了主从复制模式,它是属于 Redis 多机运行的基础,但这种模式本身存在一个致命的问题,当主节点奔溃之后,需要人工干预才能恢复 Redis 的正常使用。 例如,我们有 3 台服务器做了主从复制,一个主服务器 A 和两个从服务器 B、C,当 A 发生故障之后,需要人工把 B…

Oracle plsql 打包

--打包 --创建包 --步骤: --1、声明(创建包头) --2、创建数据对象(创建包体)--1、 create or replace package myPack asv_bookCount integer;procedure p_back(v_stuid borrow.stuid%type,v_bid borrow.bid%type);fun…

计算机网络(第四章网络层)

第四章网络层4.1_网络层提供的两种服务(1)虚电路服务(2)数据报服务4.2_网络协议4.2.1_虚拟互连网络4.2.2_分类的IP地址(1)分类IP地址三种分类方法IP 地址的一些重要特点4.2.3_IP地址与硬件地址4.2.4_地址解…

Java ObjectInputStream readShort()方法(带示例)

ObjectInputStream类readShort()方法 (ObjectInputStream Class readShort() method) readShort() method is available in java.io package. readShort()方法在java.io包中可用。 readShort() method is used to read 2 bytes of short value from this ObjectInputStream. re…

实战:Redis 主从同步

主从同步(主从复制)是 Redis 高可用服务的基石,也是多机运行中最基础的一个。我们把主要存储数据的节点叫做主节点 (master),把其他通过复制主节点数据的副本节点叫做从节点 (slave),如下图所示: 在 Redis 中一个主节点可以拥有多个从节点,一个从节点也可以是其他服务…

Oracle view 小结片段

以前下载了一个关于Oracle 视图的pdf,水平有限,没看懂多少。 版本信息: select * from v$version; 数据库信息: select name, created, log_mode from v$database; 基本的许可信息 select * from v$license; 数据库中已安装的…

idea连接sqlserver及数据库操作

idea连接sqlserver及操作一、在连接过程中遇到的问题:(1)数据库登录失败(2)登录成功之后数据库端口号怎么查看二、代码连接数据库①加载驱动和连接数据库三、数据库操作连接详解链接 总体流程链接 操作实例链接 一、…

Java ObjectInputStream readFloat()方法与示例

ObjectInputStream类readFloat()方法 (ObjectInputStream Class readFloat() method) readFloat() method is available in java.io package. readFloat()方法在java.io包中可用。 readFloat() method is used to read 4 bytes (i.e. 32 bit) of float value from this ObjectI…

实战:Redis 集群模式(上)

Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。 Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集…

java 调用 Oracle 存储过程

一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数。 大同小异的方法。    CallableStatement cs; try { // 调用一个没有参数的函数; 函数返回 a VARCHAR // 预处理callable语句 cs connection.prepareCall("…

连接数据库实例

idea连接数据库步骤详解 package com.company; import java.sql.*; public class Main {public static void main(String[] args) {Student student new Student();try {SqlOperation.main();ResultSet resultSet ScoreSql.selectScoreSql();//输出所有行操作while(resultSe…