在大型項(xiàng)目中,我想在困擾大家的主要問題為數(shù)據(jù)庫(kù)的操作,本人就在項(xiàng)目中遇到了一些問題,在這里和大家交流下。
◆1、 本人項(xiàng)目中有一個(gè)復(fù)雜視圖,數(shù)據(jù)量在2千萬以上,每次對(duì)這個(gè)視圖進(jìn)行操作時(shí),反映都很慢,而且這個(gè)視圖還經(jīng)常用到,我當(dāng)時(shí)想到的是緩存起來,可是因?yàn)閿?shù)據(jù)量很大,緩存到服務(wù)器端是不現(xiàn)實(shí)的,我們項(xiàng)目組用到了一種解決方案,把此視圖填充到物理表中,對(duì)此物理表設(shè)置索引,但是又怕用戶查詢記錄時(shí)正好在填充物理表的時(shí)候,所以可以設(shè)置2個(gè)物理表,來回切換,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反復(fù),和.NET的根據(jù)時(shí)間緩存數(shù)據(jù)原理類似。大家可能會(huì)想到索引視圖,可是索引視圖限制太多,例如:不允許使用outer join 運(yùn)算;表也不能與他自己連接;不允許進(jìn)行子查詢;定義索引視圖的SELECT 語句不能包含下列關(guān)鍵詞:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不實(shí)用。
◆2、 不要在數(shù)據(jù)表中用到自增長(zhǎng)字段,因?yàn)樵俸推渌鼣?shù)據(jù)庫(kù)導(dǎo)insert腳本時(shí),是不能控制自增長(zhǎng)列的值的。
◆3、 盡量少用外鍵約束,可以靠代碼實(shí)現(xiàn),外鍵約束會(huì)使數(shù)據(jù)庫(kù)維護(hù)起來相當(dāng)麻煩,尤其是在大項(xiàng)目中。
新聞熱點(diǎn)
疑難解答
圖片精選