首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員
單證員 | 物流師 | 價格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會工作者
會計職稱 | 注會CPA | 經(jīng)濟師 | 統(tǒng)計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師
法律顧問 | 會計證
一級建造師 | 二級建造師 | 造價師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構(gòu)師 | 建筑師 | 安全評價師
房地產(chǎn)估價師 | 土地估價師 | 設備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀人 | 造價員
投資項目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價 | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價工程師 | 招標師
執(zhí)業(yè)護士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

50種方法巧妙優(yōu)化你的SQLServer數(shù)據(jù)庫(二)

 26、MIN() 和 MAX()能使用到合適的索引。

  27、數(shù)據(jù)庫有一個原則是代碼離數(shù)據(jù)越近越好,所以優(yōu)先選擇Default,依次為Rules,Triggers, Constraint(約束如外健主健CheckUNIQUE……,數(shù)據(jù)類型的最大長度等等都是約束),Procedure.這樣不僅維護工作小,編寫程序質(zhì)量高,并且執(zhí)行的速度快。

  28、如果要插入大的二進制值到Image列,使用存儲過程,千萬不要用內(nèi)嵌INsert來插入(不知JAVA是否)。因為這樣應用程序首先將二進制值轉(zhuǎn)換成字符串(尺寸是它的兩倍),服務器受到字符后又將他轉(zhuǎn)換成二進制值.存儲過程就沒有這些動作: 方法:

  Create procedure p_insert as insert into table(Fimage) values (@image)
 
  在前臺調(diào)用這個存儲過程傳入二進制參數(shù),這樣處理速度明顯改善。

  29、Between在某些時候比IN速度更快,Between能夠更快地根據(jù)索引找到范圍。用查詢優(yōu)化器可見到差別。

  select * from chineseresume where title in (‘男‘,‘女‘) Select * from chineseresume where between
 
  ‘男‘ and ‘女‘ 是一樣的。由于in會在比較多次,所以有時會慢些。

  30、在必要是對全局或者局部臨時表創(chuàng)建索引,有時能夠提高速度,但不是一定會這樣,因為索引也耗費大量的資源。他的創(chuàng)建同是實際表一樣。

  31、不要建沒有作用的事物例如產(chǎn)生報表時,浪費資源。只有在必要使用事物時使用它。

  32、用OR的字句可以分解成多個查詢,并且通過UNION 連接多個查詢。他們的速度只同是否使用索引有關,如果查詢需要用到聯(lián)合索引,用UNION all執(zhí)行的效率更高.多個OR的字句沒有用到索引,改寫成UNION的形式再試圖與索引匹配。一個關鍵的問題是否用到索引。

  33、盡量少用視圖,它的效率低。對視圖操作比直接對表操作慢,可以用stored procedure來代替她。特別的是不要用視圖嵌套,嵌套視圖增加了尋找原始資料的難度。我們看視圖的本質(zhì):它是存放在服務器上的被優(yōu)化好了的已經(jīng)產(chǎn)生了查詢規(guī)劃的SQL。對單個表檢索數(shù)據(jù)時,不要使用指向多個表的視圖,直接從表檢索或者僅僅包含這個表的視圖上讀,否則增加了不必要的開銷,查詢受到干擾.為了加快視圖的查詢,MsSQL增加了視圖索引的功能。

  34、沒有必要時不要用DISTINCT和ORDER BY,這些動作可以改在客戶端執(zhí)行。它們增加了額外的開銷。這同UNION 和UNION ALL一樣的道理。

  select top 20 ad.companyname,comid,position,ad.referenceid,worklocation,
  convert(varchar(10),ad.postDate,120) as postDate1,workyear,degreedescription FROM
  jobcn_query.dbo.COMPANYAD_query ad where referenceID in(‘JCNAD00329667‘,‘JCNAD132168‘,‘JCNAD00337748‘,‘JCNAD00338345‘,
  ‘JCNAD00333138‘,‘JCNAD00303570‘,‘JCNAD00303569‘,
  ‘JCNAD00303568‘,‘JCNAD00306698‘,‘JCNAD00231935‘,‘JCNAD00231933‘,
  ‘JCNAD00254567‘,‘JCNAD00254585‘,‘JCNAD00254608‘,
  ‘JCNAD00254607‘,‘JCNAD00258524‘,‘JCNAD00332133‘,‘JCNAD00268618‘,
  ‘JCNAD00279196‘,‘JCNAD00268613‘) order by postdate desc
 
  35、在IN后面值的列表中,將出現(xiàn)最頻繁的值放在最前面,出現(xiàn)得最少的放在最后面,減少判斷的次數(shù)。

  36、當用SELECT INTO時,它會鎖住系統(tǒng)表(sysobjects,sysindexes等等),阻塞其他的連接的存取。創(chuàng)建臨時表時用顯示申明語句,而不是

  select INTO. drop table t_lxh begin tran select * into t_lxh from chineseresume
  where name = ‘XYZ‘ --commit
 
  在另一個連接中SELECT * from sysobjects可以看到 SELECT INTO 會鎖住系統(tǒng)表,Create table 也會鎖系統(tǒng)表(不管是臨時表還是系統(tǒng)表)。所以千萬不要在事物內(nèi)使用它。。∵@樣的話如果是經(jīng)常要用的臨時表請使用實表,或者臨時表變量。

  37、一般在GROUP BY 個HAVING字句之前就能剔除多余的行,所以盡量不要用它們來做剔除行的工作。他們的執(zhí)行順序應該如下最優(yōu):select 的Where字句選擇所有合適的行,Group By用來分組個統(tǒng)計行,Having字句用來剔除多余的分組。這樣Group By 個Having的開銷小,查詢快.對于大的數(shù)據(jù)行進行分組和Having十分消耗資源。如果Group BY的目的不包括計算,只是分組,那么用Distinct更快

  38、一次更新多條記錄比分多次更新每次一條快,就是說批處理好

  39、少用臨時表,盡量用結(jié)果集和Table類性的變量來代替它,Table 類型的變量比臨時表好

  40、在SQL2000下,計算字段是可以索引的,需要滿足的條件

  a、計算字段的表達是確定的

  b、不能用在TEXT,Ntext,Image數(shù)據(jù)類型

  c、必須配制如下選項 ANSI_NULLS = ON, ANSI_PADDINGS = ON, …….

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索
50種方法巧妙優(yōu)化你的SQLServer數(shù)據(jù)庫(二)網(wǎng)友評論網(wǎng)友評論
版權(quán)聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
 gaoxiaoliang