欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

數(shù)據(jù)庫(kù)中identity字段不必是系統(tǒng)產(chǎn)生的唯一值 性能優(yōu)化方法(新招)

 更新時(shí)間:2011年09月05日 20:14:21   作者:  
具有identity特性的字段,其值是系統(tǒng)產(chǎn)生的,自動(dòng)增加的,所以,一般把這個(gè)用在一個(gè)表的主鍵上。
但是,具有identity特性的字段,不需要具有唯一性,更不必須是主鍵。

可以通過(guò),set identity_insert tablename (on|off),在運(yùn)行時(shí)控制,是否可以在identity字段中指定值,而不是由系統(tǒng)自動(dòng)的插入值。

那么,這有什么用處呢。舉個(gè)例子來(lái)說(shuō),兩個(gè)用戶之間的聊天,可以有多次,這個(gè)用一個(gè)chatsession來(lái)表示。在數(shù)據(jù)庫(kù)中,我們需要三個(gè)表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 來(lái)表示這個(gè)關(guān)系。這里面,多出了一個(gè)表chatsession, 其主鍵sessionid具有identity特性,并且在user_chatsession中被引用。

但是,我們知道,數(shù)據(jù)庫(kù)寫操作比讀操作的開(kāi)銷要大很多,如果我想做優(yōu)化,把chatsession整個(gè)的去掉,那應(yīng)該怎么做呢.

這時(shí),就會(huì)用到我說(shuō)的這一點(diǎn)。首先把 user_chatsession 中的sesssionid變成identity 字段,在插入一個(gè)session中的第一個(gè) user-session (for user a)記錄時(shí),讓系統(tǒng)產(chǎn)生sessionid, 然后記錄下這個(gè)sessionid, 在插入一個(gè)session中后續(xù)的 user-session (for user b, user c...), 執(zhí)行set identity_insert tablename on,就可以把先前記錄的sessionid值插入。

還有另外一個(gè)方法,比較笨一點(diǎn),就是用 select max(sessionid) + 1 from table where userid = @useridA,來(lái)獲得要新插入的sessionid, 這種方法性能上顯然差了許多。

相關(guān)文章

最新評(píng)論