直接訪問(wèn)ADO.NET語(yǔ)句運(yùn)行
這是因?yàn)樗鼈儚?qiáng)制COM在運(yùn)行時(shí)(而不是在編譯時(shí))解析對(duì)Value屬性的引用,每一次對(duì)該對(duì)象的引用都要求有一系列類(lèi)似的,ADO.NET語(yǔ)句還進(jìn)行了重新設(shè)計(jì),從而向開(kāi)發(fā)人員提供對(duì)ADO.NET語(yǔ)句組件的直接訪問(wèn)。
查詢(xún)結(jié)果記錄發(fā)送到客戶(hù)端之后,客戶(hù)端應(yīng)用程序可能需要相當(dāng)可觀的時(shí)間去處理結(jié)果集。每一種體系(客戶(hù)機(jī)/服務(wù)器,多層體系中的中間層,以及ASP)都為優(yōu)化這個(gè)階段的代碼提供了相應(yīng)的技術(shù)。下面是幾個(gè)能夠顯著改善性能的技巧。 #t#
我在代碼中看到最多的錯(cuò)誤之一是:在引用Recordset Field.Value的時(shí)候,使用延遲綁定(Late Binding)。由于代碼需要頻繁地引用Value屬性,而且通常要引用的Field對(duì)象有很多,本文前面提到的倍數(shù)因子將起到重要影響——因此,ADO.NET語(yǔ)句所有這里介紹的技巧能夠顯著地改善性能。
一些開(kāi)發(fā)者使用延遲綁定技術(shù)的原因在于,他們想要明確地標(biāo)識(shí)出SELECT語(yǔ)句選擇了哪些行。為了這個(gè)目標(biāo),許多人使用了用引號(hào)包圍字符串的做法。例如,為了引用記錄集RS字段集合中的“Cows”字段,你可能使用:
- RS("Cows") 或者: RS.Fields("Cows").Value
后面這種方法顯式地引用了記錄集內(nèi)Fields集合中指定成員的Value屬性。ADO.NET語(yǔ)句這種方法要稍微快一點(diǎn),而且當(dāng)你把這些代碼向Visual Basic.NET遷移時(shí),它的向上兼容性也要好一些。上述方法的一種變化是使用感嘆號(hào)(!)操作符:
- RS!Cows
與先行綁定(Early-Binding)相比,采用上述方法時(shí)COM進(jìn)行解析的時(shí)間要長(zhǎng)得多,ADO.NET語(yǔ)句這是因?yàn)樗鼈儚?qiáng)制COM在運(yùn)行時(shí)(而不是在編譯時(shí))解析對(duì)Value屬性的引用,每一次對(duì)該對(duì)象的引用都要求有一系列類(lèi)似的、后臺(tái)進(jìn)行的查找過(guò)程。
然而,使用延遲綁定時(shí),不存在代碼引用的是哪一個(gè)列這類(lèi)問(wèn)題。ADO.NET語(yǔ)句如果你完全按照下列方式編寫(xiě)代碼。