日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這個問題和線性查詢、二分查詢是有很大關系的。索引后的數據可以使用二分法查詢,未索引的數據查詢需要線性查詢。下面詳細說一下這兩者之間的性能區別。

1、兩者的查詢原理

①、線性查詢

線性查詢又稱順序查詢,它的查詢原理就是從第一條記錄開始,逐個比較要查找的字段,直到字段內容和查找值相等,則查找成功,返回結果。若比較結果與字段所有記錄都不等,則查找失敗。下面舉例說明:

需要在某個記錄數為N的數組a[]中查找元素k,那么,線性查詢就是從a[1]開始和k進行對比,對比相等則返回a[i],如果,不相等則繼續下一個查詢, i=i+1。直到 i=N為止。那線性查詢的性能就一目了然:

  • 最好的情況就是對比1次就找到結果。
  • 最差的情況就是需要對比N次才能找到結果。
  • 平均計算,就是N/2次能找到結果

 

②、二分查詢

二分法查詢也可以說是分段查詢。主要原理就是對已經排序的一組數據進行中間分段,中間分界點和查詢值對比。如果數值小于分界點,則要查找的數落在前半段;如果數字大于分界點,則要查找的數落在前半段;如果等于分界點,則要查找數就已經找到。下面同樣舉例說明:

需要在某個記錄數為N且已經排好序的數組a[]中查找元素K,那么,二分查詢首先是確定數組的中點a[x],其實也就是a[N/2]這個值(N/2采用進一法取整)。然后對比a[x]和K值,按照前面的方法循環縮小對比的區間,最終找到想要的值。二分查詢的性能如下:

  • 二分法查詢N條記錄需要log2(N)次對比就能找到結果。
  • 前提是:數組必須要排好序

 

★從上面兩種查詢法原理可以看到,當數組N比較大時,二分查詢的查詢性能明顯優于線性查詢當數組N較小時,則線性查詢的性能更好,因為它少了求中值的開銷

2、索引給數據庫查詢帶來的性能變化

數據庫中建立索引其實就是對數據庫表中一列或多列的值進行排序的結構。其實就是為了給二分查詢做好排序的前提。結合前面兩種查詢的原理,我們就很容易理解數據庫中索引變快的原因了。其實,數據庫通常情況下,數據量都是比較大的,一般都是上萬條,甚至達到億級記錄。我們用前面原理中的公式計算對比一下:

  • 在10萬條記錄中查找一個值:那么,N=100000
  • 線性查詢性能=N/2,計算可得,平均需要對比50000次;
  • 二分查詢性能=log2(N),計算可得,大約需要17次;

從上面計算對比,我們可以看到,索引好了用二分查詢的性能會比線性查詢快非常多

 

3、數據庫哪里應該加索引

雖然加了索引后,查詢性能提升很多。但是在數據庫里面也是不所有字段都加索引的,因為,數據庫的整體性能不僅需要考慮查詢性能,還需要考慮寫入性能。當你在數據庫中某個字段加入索引后,該字段就需要建立對應的索引指針。每次新寫入或者修改字段的記錄,都需要額外寫入索引指針。所以,在數據庫中,加入索引會加快搜索性能,但也會相應降低一點點寫入性能。所以,數據庫中建立索引一般在以下幾種情況建立索引。

  • 經常需要搜索的列,增加索引可以加快搜索速度;
  • 作為主鍵的列,強制該列的唯一性和組織表中數據的排列結構;
  • 在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;
  • 在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的
  • 在經常需要排序的列上創建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間
  • 在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度

總結

總之,數據庫中因為存在大量的數據,建立索引相當于對數據進行了排序,可以使用二分查詢法來查詢數據,確實會大大提高查詢的速度。但是也會相應降低一點點寫入的速度,所以,數據庫中的索引也是有針對性的建立索引的

分享到:
標簽:索引 數據庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定