guid主键 oracle_使用GUID作为数据库主键的测试

今天听了MSDN的WebCast,是关于Entlib的数据访问的讲座,末尾我问了两个自己所关心的问题:

在一个较大型的应用中,如果需要用到两套以上的数据库(如:SQL Server和Oracle),是否可以把需要的sql查询全部封装在存储过程里,这样就只需要一套访问代码了,有没有更好的方法解决这个问题?

在数据库的主键的设立中(同时支持多种数据库)直接用GUID作为主键来得简单,但是在查询的时候影响性能的因素大不大,还有没有更好的解决方法?

以上两个问题,由于时间的关系吧,微软的工程师解答的比较简略,第一个应该需要针对具体的应用来考虑,但是第二个问题,性能影响肯定是有的,但是影响大不大呢,带着这个问题,我做了这个小试验。

注:如果您有更好的建议不防贡献出来大家探讨探讨^_^!

测试环境:

Dell笔记本电脑 迅驰1.5G

Win XP professional

512MB DDR RAM

SQL Server 2000 个人版

测试方法:

建立有10个字段的数据库[test_GUID],使用GUID作为主键,以及其他常用的字段类型,模拟现实中的使用情况,建表的SQL代码如下:

CREATE TABLE [dbo].[Test_GUID] (

[GUID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[test1] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[test2] [datetime] NULL ,

[test3] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[test4] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[test5] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[test6] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[test7] [text] COLLATE Chinese_PRC_CI_AS NULL ,

[test8] [int] NULL ,

[test9] [int] NULL

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[Test_GUID] WITH NOCHECK ADD

CONSTRAINT [PK_Test_GUID] PRIMARY KEY  CLUSTERED

(

[GUID]

)  ON [PRIMARY]

GO

建立有10个字段的数据库[test_IIDD],使用IIDD作为主键,以及其他常用的字段类型,模拟现实中的使用情况,建表的SQL代码如下:

CREATE TABLE [dbo].[Test_IIDD] (

[IIDD] [numeric] (9) IDENTITY(1,1) NOT NULL ,

[test1] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[test2] [datetime] NULL ,

[test3] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[test4] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[test5] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[test6] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值