程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 數據庫中identity字段不用是體系發生的獨一值 機能優化辦法(新招)

數據庫中identity字段不用是體系發生的獨一值 機能優化辦法(新招)

編輯:MSSQL

數據庫中identity字段不用是體系發生的獨一值 機能優化辦法(新招)。本站提示廣大學習愛好者:(數據庫中identity字段不用是體系發生的獨一值 機能優化辦法(新招))文章只能為提供參考,不一定能成為您想要的結果。以下是數據庫中identity字段不用是體系發生的獨一值 機能優化辦法(新招)正文


然則,具有identity特征的字段,不須要具有獨一性,更不用須是主鍵。

可以經由過程,set identity_insert tablename (on|off),在運轉時掌握,能否可以在identity字段中指定值,而不是由體系主動的拔出值。

那末,這有甚麼用途呢。舉個例子來講,兩個用戶之間的聊天,可以有屢次,這個用一個chatsession來表現。在數據庫中,我們須要三個表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 來表現這個關系。這外面,多出了一個表chatsession, 其主鍵sessionid具有identity特征,而且在user_chatsession中被援用。

然則,我們曉得,數據庫寫操作比讀操作的開支要年夜許多,假如我想做優化,把chatsession全部的去失落,那應當怎樣做呢.

這時候,就會用到我說的這一點。起首把 user_chatsession 中的sesssionid釀成identity 字段,在拔出一個session中的第一個 user-session (for user a)記載時,讓體系發生sessionid, 然跋文錄下這個sessionid, 在拔出一個session中後續的 user-session (for user b, user c...), 履行set identity_insert tablename on,便可以把先前記載的sessionid值拔出。

還有別的一個辦法,比擬笨一點,就是用 select max(sessionid) + 1 from table where userid = @useridA,來取得要新拔出的sessionid, 這類辦法機能上明顯差了很多。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved