色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql查詢(xún)空值有多少,為什么查詢(xún)使用索引就會(huì)快

mysql查詢(xún)空值有多少,為什么查詢(xún)使用索引就會(huì)快?

這個(gè)問(wèn)題和線性查詢(xún)、二分查詢(xún)是有很大關(guān)系的。索引后的數(shù)據(jù)可以使用二分法查詢(xún),未索引的數(shù)據(jù)查詢(xún)需要線性查詢(xún)。下面詳細(xì)說(shuō)一下這兩者之間的性能區(qū)別。

1、兩者的查詢(xún)?cè)?p>①、線性查詢(xún)

線性查詢(xún)又稱(chēng)順序查詢(xún),它的查詢(xún)?cè)砭褪菑牡谝粭l記錄開(kāi)始,逐個(gè)比較要查找的字段,直到字段內(nèi)容和查找值相等,則查找成功,返回結(jié)果。若比較結(jié)果與字段所有記錄都不等,則查找失敗。下面舉例說(shuō)明:

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

最好的情況就是對(duì)比1次就找到結(jié)果。最差的情況就是需要對(duì)比N次才能找到結(jié)果。平均計(jì)算,就是N/2次能找到結(jié)果。

②、二分查詢(xún)

二分法查詢(xún)也可以說(shuō)是分段查詢(xún)。主要原理就是對(duì)已經(jīng)排序的一組數(shù)據(jù)進(jìn)行中間分段,中間分界點(diǎn)和查詢(xún)值對(duì)比。如果數(shù)值小于分界點(diǎn),則要查找的數(shù)落在前半段;如果數(shù)字大于分界點(diǎn),則要查找的數(shù)落在前半段;如果等于分界點(diǎn),則要查找數(shù)就已經(jīng)找到。下面同樣舉例說(shuō)明:

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

二分法查詢(xún)N條記錄需要log2(N)次對(duì)比就能找到結(jié)果。前提是:數(shù)組必須要排好序

★從上面兩種查詢(xún)法原理可以看到,當(dāng)數(shù)組N比較大時(shí),二分查詢(xún)的查詢(xún)性能明顯優(yōu)于線性查詢(xún)。當(dāng)數(shù)組N較小時(shí),則線性查詢(xún)的性能更好,因?yàn)樗倭饲笾兄档拈_(kāi)銷(xiāo)。

2、索引給數(shù)據(jù)庫(kù)查詢(xún)帶來(lái)的性能變化

數(shù)據(jù)庫(kù)中建立索引其實(shí)就是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的結(jié)構(gòu)。其實(shí)就是為了給二分查詢(xún)做好排序的前提。結(jié)合前面兩種查詢(xún)的原理,我們就很容易理解數(shù)據(jù)庫(kù)中索引變快的原因了。其實(shí),數(shù)據(jù)庫(kù)通常情況下,數(shù)據(jù)量都是比較大的,一般都是上萬(wàn)條,甚至達(dá)到億級(jí)記錄。我們用前面原理中的公式計(jì)算對(duì)比一下:

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

從上面計(jì)算對(duì)比,我們可以看到,索引好了用二分查詢(xún)的性能會(huì)比線性查詢(xún)快非常多。

3、數(shù)據(jù)庫(kù)哪里應(yīng)該加索引

雖然加了索引后,查詢(xún)性能提升很多。但是在數(shù)據(jù)庫(kù)里面也是不所有字段都加索引的,因?yàn)椋瑪?shù)據(jù)庫(kù)的整體性能不僅需要考慮查詢(xún)性能,還需要考慮寫(xiě)入性能。當(dāng)你在數(shù)據(jù)庫(kù)中某個(gè)字段加入索引后,該字段就需要建立對(duì)應(yīng)的索引指針。每次新寫(xiě)入或者修改字段的記錄,都需要額外寫(xiě)入索引指針。所以,在數(shù)據(jù)庫(kù)中,加入索引會(huì)加快搜索性能,但也會(huì)相應(yīng)降低一點(diǎn)點(diǎn)寫(xiě)入性能。所以,數(shù)據(jù)庫(kù)中建立索引一般在以下幾種情況建立索引。

經(jīng)常需要搜索的列,增加索引可以加快搜索速度;作為主鍵的列,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu);在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的在經(jīng)常需要排序的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,這樣查詢(xún)可以利用索引的排序,加快排序查詢(xún)時(shí)間在經(jīng)常使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度

總結(jié)

總之,數(shù)據(jù)庫(kù)中因?yàn)榇嬖诖罅康臄?shù)據(jù),建立索引相當(dāng)于對(duì)數(shù)據(jù)進(jìn)行了排序,可以使用二分查詢(xún)法來(lái)查詢(xún)數(shù)據(jù),確實(shí)會(huì)大大提高查詢(xún)的速度。但是也會(huì)相應(yīng)降低一點(diǎn)點(diǎn)寫(xiě)入的速度,所以,數(shù)據(jù)庫(kù)中的索引也是有針對(duì)性的建立索引的。

感謝閱讀!我是數(shù)智風(fēng),用經(jīng)驗(yàn)回答問(wèn)題,歡迎評(píng)論關(guān)注。