http://blog.itpub.net/28602568/viewspace-759789/

varchar 、varchar2、nvarchar、nvarchar2  -->存储可变的字符串

varchar 、varchar2:
varchar:汉字全角等字符占2字节,数字、字母均1个字节
varchar2:一般所有字符都占2个字符处理,主要也看数据库的编译格式
    GBK :汉字占2字节,英文1字节  -->(oracle 按照默认GBK编码格式)
    UTF-8:汉字3字节,英文1字节   -->select userenv(‘language‘) from dual;查看oracle 编码格式
区别:
varchar2 空串=null  “(insert into ‘‘ )--->select .. where id is null” 可以查到,varchar类型的空串就按‘‘空串处理,not null查不到
建议使用Oracle提供的特定数据类型varchar2,可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容(varchar oracle不建议使用)
---->varchar2适合存储英文
nvarchar、nvarchar2  :
nvarchar(n):存入n个英文/汉字/中文组合    10指字符数不是字节数      nvarchar类型中文2字节  英文1字节
nvarchar2:字符均按2字节计算  nvarchar(20)-->可存入20个2字节的内容  -->虽占更多空间,兼容性好
NVARCHAR2和VARCHAR2的区别
1、NVARCHAR2(10)-->10中/10英 (nvarchar’2‘适合存储中文)
2、VARCHAR2(10) -->最多5中/10英  适合存储英文

datatypes 官网: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm

声明
这里的user_segments.blocks=user_tables.blocks+user_tables.empty_blocks
dba_tables.BLOCKS  Number of used data blocks in the table
dba_tables.EMPTY_BLOCKS  Number of empty (never used) data blocks in the table
dba_segments.blocks Size, in Oracle blocks, of the segment

从合理利用空间和兼容性上考虑建议:
如果该列有大量的英文则用varchar2
如果该列有大量的中文则用nvarchar2

总结:
英文就不说了,varchar2存入英文 1字节  nvarchar2 存英文是2字节  
所以建议不要在nvarchar2中存入英文  太浪费空间了
测试下5个汉字 的varchar2(10)和 nvarchar2(5)那个效率高:

经测试 5个汉字 的varchar2(10)和 nvarchar2(5)那个效率没太大影响 主要是存储数据选择数据类型要‘慎重’考虑

时间: 2024-10-10 17:27:28

http://blog.itpub.net/28602568/viewspace-759789/的相关文章

转载 :sql server分区 http://blog.itpub.net/27099995/viewspace-1081158/

转载:http://blog.itpub.net/27099995/viewspace-1081158/ 在  sql server 2005 之前不提供分区表,但可以用其他方式建立"分区表",sql server 2005之后提供了分区表,这使得我们在处理超大容量数据库性能方面有了新的选择,通过建立分区表,可以把数据存储在不同的物理硬盘上,在多cpu及多硬盘的服务器上,有效的利用了i/o并行处理,使得不至于存取数据时卡死在某一个物理硬盘上.       建立分区表,主要有三个步骤:

一个效率低下的SQL具有的特点

主要从SQL执行信息(v$sql,gv$sql...)和SQL执行计划(v$sql_plan,gv$sql_plan,v$sql_plan_statistics_all...)的特点上来讨论,比如:1.OLTP环境下,v$sql上executions>1000的,单次elapsed_time>3s,就认为可能SQL属于高耗SQL,需要关注...2.执行计划有笛卡尔积运算的,需要关注...3.OLTP环境下,SORT MERGE JOIN的需要关注...4.谓词出现显示函数运算或自动函数索引或数

Oracle 查询每天执行慢的SQL

本文转载自http://blog.itpub.net/28602568/viewspace-1364844/ 前言: 工作中的您是否有 想对每天慢的sql进行查询.汇总或者行优化等情况,如下SQL希望对您有帮助 --- 查询每天执行慢的SQL: SELECT S.SQL_TEXT, S.SQL_FULLTEXT, S.SQL_ID, ROUND(ELAPSED_TIME / 1000000 / (CASE WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) =

Mac mySql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的解决办法

我的环境:Mac 10.11.6 ,mysql  5.7.14  . mac mySql 报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 这个错是链接时报的错,要链接必须启动.修复的时候首先要启动mysql. 首先来了解一下 mysql.sock的作用: Mysql有两种连接方式: (1),TCP/IP (2),socket 对mysql.sock来说,其

配置EM遇到的问题:*_orcl not found\listener not up\Error creating the repository

要想打开OEM的web管理程序,必须先启动Database listener,再启动Datebase Control端口监控程序,但是碰到下面的情况. 问题0:    [[email protected] OC4J_DBConsole]$ emctl start dbconsole    TZ set to PRC    OC4J Configuration issue. /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_l

【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章

[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何使用客户端发布BLOG(重点) ② 如何快速发布微信公众号文章 ③ 如何批量上传图片到blog ④ 如何批量上传图片到微信公众号上     Tips: ① 本文在itpub(http://blog.itpub.net/26736162)

Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219

Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个明显的开始,明显的过程及一个明显的结束,因此程序能直接控制程序事件或过程的顺序.虽然在顺序的过程驱动的程序中也有很多处理异常的方法,但这样的异常处理也仍然是顺序的,过程驱动的结构. 而Windows的驱动方式是事件驱动,就是不由事件的顺序来控制,而是由事件的发生来控制,所有的事件是无序的,所为一个程

算法学习blog

http://www.dataguru.cn/article-7230-1.html?union_site=baidu_c http://edu.dataguru.cn/ http://blog.csdn.net/hguisu/article/details/7866173 http://baike.baidu.com/link?url=xFcqL7NuC9iNsxEtrl26kZWQIO4e8qLvCmVtM1V_50aefwj5DO9bwc5sbd0D_V8O95FBLyBjaQsCj-pV

【故障处理】告警日志报“ORA-01565 Unable To open Spfile”

[故障处理]告警日志报"ORA-01565 Unable To open Spfile" 1.1  BLOG文档结构图 1.2  故障分析及解决过程 1.2.1  故障环境介绍 项目 source db db 类型 RAC db version 12.1.0.2.0 db 存储 ASM OS版本及kernel版本 SuSE Linux Enterprise Server(SLES 11) 64位 1.2.2  故障发生现象及报错信息 客户的12.1.0.2的RAC库告警日志报ORA-0