憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評(píng)論 :: 0 Trackbacks
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          公告

          本博客只作為本人學(xué)習(xí)資料使用,如侵犯你的相關(guān)權(quán)益,請(qǐng)聯(lián)系我!我會(huì)盡快做出處理! 如商業(yè)用途請(qǐng)讓本人知道,轉(zhuǎn)摘保留本人姓名,blog地址.
          Email:

          常用鏈接

          留言簿(6)

          隨筆分類(185)

          隨筆檔案(165)

          文章檔案(17)

          http://www.blogcn.com/u3/19/23/zhjhlz/inde

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          使用聚集索引  
            聚集索引確定表中數(shù)據(jù)的物理順序。聚集索引類似于電話簿,后者按姓氏排列數(shù)據(jù)。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序,因此一個(gè)表只能包含一個(gè)聚集索引。但該索引可以包含多個(gè)列(組合索引),就像電話簿按姓氏和名字進(jìn)行組織一樣。  
             
            聚集索引對(duì)于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個(gè)值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。例如,如果應(yīng)用程序執(zhí)行的一個(gè)查詢經(jīng)常檢索某一日期范圍內(nèi)的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達(dá)結(jié)束日期。這樣有助于提高此類查詢的性能。同樣,如果對(duì)從表中檢索的數(shù)據(jù)進(jìn)行排序時(shí)經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢?cè)摿袝r(shí)都進(jìn)行排序,從而節(jié)省成本。  
             
            當(dāng)索引值唯一時(shí),使用聚集索引查找特定的行也很有效率。例如,使用唯一雇員   ID   列   emp_id   查找特定雇員的最快速的方法,是在   emp_id   列上創(chuàng)建聚集索引或   PRIMARY   KEY   約束  
             
             
            使用非聚集索引  
            非聚集索引與課本中的索引類似。數(shù)據(jù)存儲(chǔ)在一個(gè)地方,索引存儲(chǔ)在另一個(gè)地方,索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)(這可以由聚集索引規(guī)定)。如果在表中未創(chuàng)建聚集索引,則無法保證這些行具有任何特定的順序。  
             
            與使用書中索引的方式相似,Microsoft&reg;   SQL   Server™   2000   在搜索數(shù)據(jù)值時(shí),先對(duì)非聚集索引進(jìn)行搜索,找到數(shù)據(jù)值在表中的位置,然后從該位置直接檢索數(shù)據(jù)。這使非聚集索引成為精確匹配查詢的最佳方法,因?yàn)樗饕枋霾樵兯阉鞯臄?shù)據(jù)值在表中的精確位置的條目。如果基礎(chǔ)表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的文件號(hào)、頁號(hào)和槽號(hào)的行   ID   (RID)。例如,對(duì)于在   emp_id   列上有非聚集索引的表,如要搜索其雇員   ID   (emp_id),SQL   Server   會(huì)在索引中查找這樣一個(gè)條目,該條目精確列出匹配的   emp_id   列在表中的頁和行,然后直接轉(zhuǎn)到該頁該行。  

          -------------------------------------------------------分割線-------------------------------------------------------
                  在工作中遇見了SQL性能問題,最后在同事的幫助下解決了此問題:就是通過建聚集索引的方式解決的!
                   原來的SQL中有如下的where語句:
                   and  datediff(day, date1,'2009-1-01')<=

               and  datediff(day, date1,'2009-2-03')>=

                  在date1建了聚集索引,SQL修改如下:
                    and   date1>='2009-1-01'

               and  date1<='2009-2-03' 

                   去掉了datediff函數(shù),因?yàn)橛煤瘮?shù)的話就不會(huì)用到date1的聚集索引! 在此記錄一下,以備后查!
              
          posted on 2009-12-04 15:19 二胡 閱讀(168) 評(píng)論(0)  編輯  收藏 所屬分類: pl/sql
          主站蜘蛛池模板: 泉州市| 巩留县| 民勤县| 城步| 灌阳县| 卢湾区| 永春县| 古浪县| 和林格尔县| 团风县| 巴中市| 安塞县| 油尖旺区| 探索| 岗巴县| 镇赉县| 高淳县| 浦城县| 新野县| 谷城县| 清流县| 浦县| 开封县| 石景山区| 慈利县| 谢通门县| 新和县| 拉孜县| 垦利县| 桦甸市| 多伦县| 霸州市| 仪陇县| 乌拉特中旗| 承德县| 施秉县| 赤壁市| 阳新县| 黑水县| 兴安县| 阳东县|