憨厚生

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
          使用聚集索引  
            聚集索引確定表中數據的物理順序。聚集索引類似于電話簿,后者按姓氏排列數據。由于聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。  
             
            聚集索引對于那些經常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個值的行后,便可以確保包含后續索引值的行在物理相鄰。例如,如果應用程序執行的一個查詢經常檢索某一日期范圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達結束日期。這樣有助于提高此類查詢的性能。同樣,如果對從表中檢索的數據進行排序時經常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。  
             
            當索引值唯一時,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇員   ID   列   emp_id   查找特定雇員的最快速的方法,是在   emp_id   列上創建聚集索引或   PRIMARY   KEY   約束  
             
             
            使用非聚集索引  
            非聚集索引與課本中的索引類似。數據存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向數據的存儲位置。索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲(這可以由聚集索引規定)。如果在表中未創建聚集索引,則無法保證這些行具有任何特定的順序。  
             
            與使用書中索引的方式相似,Microsoft®   SQL   Server™   2000   在搜索數據值時,先對非聚集索引進行搜索,找到數據值在表中的位置,然后從該位置直接檢索數據。這使非聚集索引成為精確匹配查詢的最佳方法,因為索引包含描述查詢所搜索的數據值在表中的精確位置的條目。如果基礎表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的文件號、頁號和槽號的行   ID   (RID)。例如,對于在   emp_id   列上有非聚集索引的表,如要搜索其雇員   ID   (emp_id),SQL   Server   會在索引中查找這樣一個條目,該條目精確列出匹配的   emp_id   列在表中的頁和行,然后直接轉到該頁該行。  

          -------------------------------------------------------分割線-------------------------------------------------------
                  在工作中遇見了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函數,因為用函數的話就不會用到date1的聚集索引! 在此記錄一下,以備后查!
              
          posted on 2009-12-04 15:19 二胡 閱讀(168) 評論(0)  編輯  收藏 所屬分類: pl/sql
          主站蜘蛛池模板: 湖州市| 炎陵县| 库尔勒市| 胶州市| 南陵县| 手游| 五常市| 涟源市| 和静县| 沙河市| 安泽县| 济源市| 四会市| 炎陵县| 贵州省| 屏东县| 永靖县| 大厂| 清新县| 金溪县| 交口县| 武清区| 遵义市| 济宁市| 应用必备| 儋州市| 保定市| 清远市| 辽中县| 米易县| 固阳县| 江永县| 甘谷县| 讷河市| 罗田县| 佛山市| 德保县| 清新县| 昭平县| 监利县| 襄樊市|