视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据库设计中char和long两种类型不要选择
2020-11-09 07:33:47 责编:小采
文档

如果用 char ,问题非常多: 1.可能浪费空间,除非正好放满。 2.会导致程序员在字段前使用trunc等截掉尾部空的函数,要优化必须建立一些函数索引。写程序还要用rpad之类的函数。 3.如果char很大,很可能导致索引无法建立。 4.长度一变,经常要修改程序。 5.

如果用char,问题非常多:
1.可能浪费空间,除非正好放满。
2.会导致程序员在字段前使用trunc等截掉尾部空格的函数,要优化必须建立一些函数索引。写程序还要用rpad之类的函数。
3.如果char很大,很可能导致索引无法建立。

4.长度一变,经常要修改程序。
5.导致程序使用大量的非绑定变量。这个可能更开发语言有关,例子:
c_id=‘1212’ 可以查询到结果
如果使用绑定:c_id=:a这个要看各种开发语言,因为不会补全尾部的空格,可能查询结果为空。

6.CHAR/NCHAR类型还会带来混乱(很多应用存储了信息之后却无法“找到”所存储的数据)。

还有:CHAR/NCHAR实际上只是伪装的VARCHAR2/NVARCHAR2,基于这一点,所以我认为其实只需要考虑这两种字符串类型:VARCHAR和NVARCHAR2。

Oracle的LONG类型可谓“臭名昭著”,由于LONG类型的太多,以至于Oracle很少去提LONG类型有哪些条件,而一般都是通过说明在哪些情况下,可以使用LONG类型。

正是这些阻止了LONG的使用,Oracle也在推出了大对象类型——LOB之后,强烈建议用户不要在使用LONG类型。

1、一个表中只能包含一个LONG类型的列。

2、不能索引LONG类型列。

3、不能将含有LONG类型列的表作聚簇。

4、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insertinto ...select。

5、不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如createtable as select。

6、不能对LONG类型列加约束条件(NULL、NOTNULL、DEFAULT除外),如:关键字列(PRIMARYKEY)不能是LONG数据类型。

7、LONG类型列不能用在Select的以下子句中:where、groupby、orderby,以及带有distinct的select语句中。

8、LONG类型列不能用于分布查询。

--整理自网络

下载本文
显示全文
专题