我有一个注册页面,起初我想在数据库中插入一些必填字段,然后在第二页中我想根据userid
.
所以我想用存储过程来做到这一点,这是最好的方法,分别创建一个插入和更新存储过程,还是创建一个具有插入和更新的单一过程?
在性能方面哪个最好?
我有一个注册页面,起初我想在数据库中插入一些必填字段,然后在第二页中我想根据userid
.
所以我想用存储过程来做到这一点,这是最好的方法,分别创建一个插入和更新存储过程,还是创建一个具有插入和更新的单一过程?
在性能方面哪个最好?
在同一个查询中包含这些并没有性能提升,因为两个单独的存储过程仍然由数据库服务器预编译。这更像是一个维护问题而不是性能问题——我建议为插入和更新使用单独的存储过程,这比在单个脚本中将它们混合在一起更具可读性和明显性。
您可以创建一个用于插入的过程和另一个用于更新的过程
您可以创建两个单独的存储过程,一个 forINSERT
和一个 for UPDATE
。这很简单,任何人都可以理解。
但是,如果您使用的是 MSSQL 2008 或更新版本,那么您可以创建一个存储过程并使用MERGE
:
编写单独的插入和更新过程会更有效,因为该过程不必考虑是插入还是更新,尽管效率节省将是最小的,所以我不会基于此做出决定,它应该更基于围绕可读性和可理解性。
任何性能差异都可以忽略不计。在某个地方肯定会有几微秒的差异,但它真的会那么小,而且一堆其他的小决定会消除差异。
那么唯一真正的区别是代码的清晰程度。根据您的描述,在我看来,“创建新用户”和“更新用户”被您的其余代码视为单独的关注点,因此应该分开。
如果出于某种原因,您的代码会发现更容易处理“根据需要创建或更新”操作,那将是另一回事,但这里没有任何迹象表明这种情况。