关于设计存储过程的最佳实践,更新表中记录的存储过程是否应使用主键来标识要更新的记录,还是唯一键?
Unique Key似乎要发送很多其他参数,我想不出主键不知道的情况。
答案 0 :(得分:2)
通过"唯一键"我认为你的意思是"商业密钥"。如果您有一个与某些外部源松散同步的数据库,则可以使用业务键作为存储过程的参数。
我们假设您收到了另一家公司的平面文件,用于订购产品,激活服务,启动流程或其他内容。他们可能不知道主键,并且可以通过名称请求事物:(公司X,服务Y,激活)您根据唯一的公司名称,唯一的服务名称,唯一的状态调用您的存储过程。当然,您可能会说远程系统应该使用ID,但这有时是您无法控制的。
另一个例子:在应用程序级别执行复制。两个dbs之间的序列可能不同步,因此通过业务密钥引用远程记录会更安全。
答案 1 :(得分:1)
这个问题有两个不同的方面。
1 /您正在使用的索引的大小:选择最小的索引(例如列大小)
2 /您正在使用的索引列的非null属性:(如果您的引擎允许在可空列上使用唯一索引),最好选择放置在NOT nullable列上的索引。
3 /索引的表空间:您还可以查看索引是否有特殊存储而不是另一个,这将提高性能(挂载索引...)
4 /列类型:通常较小的数字比文本解析更快(道歉没有来源,请小心使用)
我现在想不出更多,但我很确定其他人会完成清单。
干杯。