CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

你喜欢用number做数据类型吗?

作者: xzh2000,  出处:blog, 责任编辑: 李书琴, 
2007-12-04 00:00
  如果编码不含一些字符的话,用number确实很有优势……

  经常见到有人在系统设计时用GUID或MD5产生的32位字符串做主键,即使一些按日期产生的业务编码如2001010100001这样的字符串,都用varchar2来存储,总觉得不是很好,如果数据量不大的话,也无可厚非,但如果运用于存储海量的数据,那将会造成存储成本的巨增,请看下面的测试:

  16:58:49 SQL> create table test(a1 varchar2(32),a2 number);

  Table created.

  16:59:03 SQL> insert into test values('20010101000001',20010101000001);

  1 row created.

  16:59:26 SQL> commit;

  Commit complete.

  16:59:27 SQL> select dump(a1),dump(a2) from test;

  DUMP(A1)

  ----------------------------------------

  DUMP(A2)

  ----------------------------------------

  Typ=1 Len=14: 50,48,48,49,48,49,48,49,48,48,48,48,48,49

  Typ=2 Len=8: 199,21,2,2,2,1,1,2

  begin

  for i in 1..100000 loop

  insert into test values('200101010000010000',200101010000010000);

  end loop;

  commit;

  end;

  17:05:59 SQL> analyze table test compute statistics;

  Table analyzed.

  17:07:20 SQL> select column_name,avg_col_len from user_tab_columns where table_name='TEST';

  COLUMN_NAME AVG_COL_LEN

  ------------------------------ -----------

  A1 18

  A2 8

  各位自己看,如果编码不含一些字符的话,用number确实很有优势的。。。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i