進(jìn)行ADO工具查詢操作相關(guān)介紹
在正式運(yùn)行之前,COM不會(huì)解析這類名字。除非絕對(duì)必要,否則不要返回記錄集。當(dāng)正在執(zhí)行的查詢返回記錄時(shí),ADO工具就會(huì)構(gòu)造一個(gè)Recordset對(duì)象,更為豐富多彩的登錄和個(gè)性化服務(wù)以及更好的數(shù)據(jù)訪問和同步。
Recordset對(duì)象的開銷很大,因此你應(yīng)該盡量避免使用Recordset對(duì)象。ADO工具注意有時(shí)候執(zhí)行查詢雖然返回結(jié)果,但不是返回記錄。例如,你可以通過Return Status參數(shù)返回整數(shù)值。另外,你可以返回Output參數(shù)來替代需要構(gòu)造Recordset對(duì)象的記錄集,SQL Server允許返回的Output參數(shù)多達(dá)1000個(gè)。
只要有可能,請(qǐng)用動(dòng)作查詢(INSERT,UPDATE,DELETE和執(zhí)行這些操作的存儲(chǔ)過程)替代可更新的Recordset游標(biāo)。此時(shí),ADO工具你應(yīng)該使用Execute方法和它的adExecuteNoRecords選項(xiàng),確保ADO能夠知道查詢不需要構(gòu)造Recordset對(duì)象。
除非必要,否則不要請(qǐng)求服務(wù)器進(jìn)行排序。ADO工具大多數(shù)情況下,對(duì)于一個(gè)適度大小的Recordset對(duì)象,當(dāng)它被發(fā)送到客戶端之后,排序速度將更快。另外,如果讓ADO客戶程序排序Recordset中的記錄,則客戶應(yīng)用程序能夠按照用戶選擇的次序排序,從而提高了靈活性。 在編寫查詢之前了解索引的結(jié)構(gòu)。創(chuàng)建合適的索引,調(diào)整查詢的語法以利用這些索引,你將能夠提高記錄提取的速度。Query Analyzer能夠幫助你決定是否有必要添加更多的索引。
不要一次性返回太多的記錄。很多時(shí)候,容量太大的記錄集會(huì)嚴(yán)重地影響應(yīng)用程序的性能。只返回那些當(dāng)前你需要的記錄,ADO工具如果客戶程序需要更多的記錄,則以后隨時(shí)提取。通過帶有參數(shù)的WHERE子句,或者靈活地運(yùn)用TOP N查詢,限制查詢的范圍。 不要返回太多的列。避免使用SELECT *。SELECT *語句告訴SQL Server返回所有的列,不管實(shí)際存在的列有多少。#t#
只選擇那些你需要的列,這樣,當(dāng)有人為表增加了更多的列時(shí),你不會(huì)得到大得出奇的結(jié)果集。 避免使用游標(biāo)。ADO工具如果你必須使用游標(biāo),那么不要使用那些所需資源數(shù)量超過必要的游標(biāo)類型。如果沒有必要,不要要求游標(biāo)提供滾動(dòng)、更新和數(shù)據(jù)緩沖能力。
詳細(xì)地告訴ADO工具你想要它做些什么。打開Recordset或者構(gòu)造Command對(duì)象時(shí),不要忘了設(shè)置CommandType選項(xiàng)。它避免了ADO“猜測(cè)”你的意圖,你將能夠減少與服務(wù)器的通信,而且使得代碼更加穩(wěn)定。 另外,學(xué)習(xí)使用診斷工具,測(cè)定運(yùn)行在服務(wù)器上的代碼和應(yīng)用程序的代碼占用了多少時(shí)間——以及這些時(shí)間花在哪里。在這方面,SQL Server Profiler是一個(gè)寶貴的工具。
它能夠闡明你的代碼在要求服務(wù)器做些什么,能夠在草率構(gòu)造的查詢中或?qū)τ阱e(cuò)誤選擇的命令屬性突出顯示。另外,ADO工具Query Analyzer還能夠用圖示的方式顯示出SQL Server將如何執(zhí)行查詢,提出改進(jìn)查詢的建議,幫助你調(diào)整查詢。Query Analyzer甚至還能夠執(zhí)行它提出的建議(例如,添加或者刪除索引),你只需點(diǎn)擊一下按鈕就可以完成。