当前位置: 首页 > 知识库问答 >
问题:

SQL Guid主键联接性能

程祯
2023-03-14

更好的选择是使用整数主/外键,并将GUID用作在每个表上具有唯一索引的客户端ID吗?-我担心的是实体框架需要加载导航属性,以便在不对现有代码进行重大修改的情况下获得相关实体的GUID。

有问题的数据库/硬件是SQL Azure。

共有1个答案

田文景
2023-03-14

您还可以根据unique key约束创建外键,这样就可以选择将外键设置为ID标识,以替代GUID。

即。

Create Table SomeTable
(
    UUID UNIQUEIDENTIFIER NOT NULL,
    ID INT IDENTITY(1,1) NOT NULL,

    CONSTRAINT PK PRIMARY KEY NONCLUSTERED (UUID),
    CONSTRAINT UQ UNIQUE (ID)
)
GO

Create Table AnotherTable
(
    SomeTableID INT,

    FOREIGN KEY (SomeTableID) REFERENCES SomeTable(ID)
)
GO

编辑

 类似资料:
  • 我正在处理遗留系统,需要从数据库中读取一些信息。下面是表格关系 供应商(vendorid-pk,vendorEid,name) VendorContactBridge(bridgeid-pk,vendorEid,contactEid) 联系人(contactid-pk,contactEid,phone) vendorEid和contactEid不是表的主键,但用作联接表VendoContactBr

  • 问题内容: 有没有一种方法可以将两个主键合并为一个,然后级联更新所有受影响的关系?这是场景: 客户(idCustomer int PK,公司varchar(50)等) CustomerContacts(idCustomerContact int PK,idCustomer int FK,名称varchar(50)等) CustomerNotes(idCustomerNote int PK,idCu

  • 问题内容: 我使用主键联接列(employee_id)映射了员工和员工详细信息类(双向) 有人可以说明执行以下查询会话时的原因吗。createQuery(“ from Employee”)。list(); A)执行类似2),3)和4)的联接查询以从employeedetail中获取数据?为什么不使用雇员对象中的employeeid值直接从employeedetail表中获取数据而不进行联接? B)

  • 我正在使KStream-KStream连接,其中创建2个内部主题。而KStream-KTable join将创建1个内部主题+1个表。 就性能和其他因素而言,哪个更好?

  • 问题内容: 问题 首先,我想知道我的数据库结构很糟糕,但是目前我无法更改它。 话虽这么说,我需要在Hibernate(4.2.1)中创建一对多的双向关系,该关系不涉及主键(关系的“父”侧仅包含唯一键)并且不涉及联接表。表示这种关系的外键是从“子”到“父”的反向指针(请参见下文)。我已经搜索并尝试了各种不同的注释配置,但是没有运气。我要的是可能的吗? 数据库 GLOBAL_PART PART_REL

  • 问题内容: 我遇到一种情况,我需要在ORM类层次结构中的对象上联接表,其中join列不是基类的主键。这是表格设计的示例: 这是映射(为简洁起见,省略了getter和setter方法 鉴于其连接列不是,我如何添加映射? 我尝试了以下方法: 这将失败,因为用于检索Bar对象的SQL试图从FOO表中获取BAR_ID值。我也尝试过将JoinTable注释替换为 这不会产生SQL错误,也不会检索任何数据,因