數據庫中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, 這類辦法機能上明顯差了很多。