本來(lái)想把自己以前寫(xiě)的關(guān)于數(shù)據(jù)庫(kù)主鍵的一篇blog轉(zhuǎn)過(guò)來(lái),回頭一看寫(xiě)得太膚淺了,就把收集到的關(guān)于數(shù)據(jù)庫(kù)的連接給發(fā)上,也方便自己以后復(fù)習(xí)。以下大部分內(nèi)容來(lái)自vckbase
數(shù)據(jù)庫(kù)主鍵設(shè)計(jì)之思考
----"我強(qiáng)調(diào)主鍵不應(yīng)該具有實(shí)際的意義,這可能對(duì)于一些朋友來(lái)說(shuō)不太認(rèn)同..."
SQL Server 索引結(jié)構(gòu)及其使用(一)
----實(shí)際上,您可以把索引理解為一種特殊的目錄。微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)......
SQL Server 索引結(jié)構(gòu)及其使用(二)
----很多人不知道SQL語(yǔ)句在SQL SERVER中是如何執(zhí)行的,他們擔(dān)心自己所寫(xiě)的SQL語(yǔ)句會(huì)被SQL SERVER誤解。比如: select * from table1 where name=''zhangsan'' and tID > 10000 和執(zhí)行: select * from table1 where tID > 10000 and name=''zhangsan'' 一些人不知道以上兩條語(yǔ)句的執(zhí)行效率是否一樣,因?yàn)槿绻?jiǎn)單的從語(yǔ)句先后上看,這兩個(gè)語(yǔ)句的確是不一樣,如果tID是一個(gè)聚合索引,那么后一句僅僅從表的10000條以后的記錄中查找就行了;而前一句則要先從全表中查找看有幾個(gè)name=''zhangsan''的,而后再根據(jù)限制條件條件tID>10000來(lái)提出查詢結(jié)果。
?SQL Server 索引結(jié)構(gòu)及其使用(三)
----建立一個(gè) Web 應(yīng)用,分頁(yè)瀏覽功能必不可少。這個(gè)問(wèn)題是數(shù)據(jù)庫(kù)處理中十分常見(jiàn)的問(wèn)題。經(jīng)典的數(shù)據(jù)分頁(yè)方法是:ADO 紀(jì)錄集分頁(yè)法,也就是利用ADO自帶的分頁(yè)功能(利用游標(biāo))來(lái)實(shí)現(xiàn)分頁(yè)。但這種分頁(yè)方法僅適用于較小數(shù)據(jù)量的情形,因?yàn)橛螛?biāo)本身有缺點(diǎn):游標(biāo)是存放在內(nèi)存中,很費(fèi)內(nèi)存。游標(biāo)一建立,就將相關(guān)的記錄鎖住,直到取消游標(biāo)。游標(biāo)提供了對(duì)特定集合中逐行掃描的手段,一般使用游標(biāo)來(lái)逐行遍歷數(shù)據(jù),根據(jù)取出數(shù)據(jù)條件的不同進(jìn)行不同的操作。而對(duì)于多表和大表中定義的游標(biāo)(大的數(shù)據(jù)集合)循環(huán)很容易使程序進(jìn)入一個(gè)漫長(zhǎng)的等待甚至死機(jī)。
SQL Server 索引結(jié)構(gòu)及其使用(四)
----在上一節(jié)的標(biāo)題中,筆者寫(xiě)的是:實(shí)現(xiàn)小數(shù)據(jù)量和海量數(shù)據(jù)的通用分頁(yè)顯示存儲(chǔ)過(guò)程。這是因?yàn)樵趯⒈敬鎯?chǔ)過(guò)程應(yīng)用于“辦公自動(dòng)化”系統(tǒng)的實(shí)踐中時(shí),筆者發(fā)現(xiàn)這第三種存儲(chǔ)過(guò)程在小數(shù)據(jù)量的情況下,有如下現(xiàn)象: 1、分頁(yè)速度一般維持在1秒和3秒之間。 2、在查詢最后一頁(yè)時(shí),速度一般為5秒至8秒,哪怕分頁(yè)總數(shù)只有3頁(yè)或30萬(wàn)頁(yè)。
數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程的自動(dòng)化生成
----設(shè)計(jì)時(shí)的自動(dòng)化加快了編碼,并保證所有過(guò)程都用相同的命名規(guī)范和結(jié)構(gòu)來(lái)生成。為了在大型 SQL 項(xiàng)目中盡量提高編碼的效率,作者編寫(xiě)了一系列的設(shè)計(jì)時(shí)(design-time)存儲(chǔ)過(guò)程,用它們來(lái)生成運(yùn)行時(shí)(run-time)存儲(chǔ)過(guò)程,并一直在工程中使用。最近,作者更新了其存儲(chǔ)過(guò)程以便使用 SQL Server 2000 的特性,其中包括用戶定義函數(shù)。本文所及內(nèi)容涵蓋創(chuàng)建并執(zhí)行這些動(dòng)態(tài) T-SQL 腳本以使普通的數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程編碼自動(dòng)化。