網(wǎng)站怎么創(chuàng)建如何做宣傳推廣營銷
1.二叉樹,紅黑樹,B 樹,B+樹
二叉樹:就是每個節(jié)點最多只能有兩個子節(jié)點的樹;
紅黑樹:就是自平衡二叉搜索樹,紅黑樹通過一下五個規(guī)則構(gòu)建:
1.節(jié)點只能是紅色或黑色;
2.根節(jié)點只能是黑色;
3.不能有連續(xù)的紅色節(jié)點;
4.葉子節(jié)點為黑色;
5.從任意節(jié)點到其所有葉子節(jié)點的路徑上,黑色節(jié)點數(shù)相同,黑稿平衡
B 樹:多路平衡搜索樹,所有節(jié)點都存儲數(shù)據(jù);
B+樹:非葉子節(jié)點只存鍵,數(shù)據(jù)全部存在葉子節(jié)點;
2.索引的底層數(shù)據(jù)結(jié)構(gòu)了解過嘛 ?
索引的底層數(shù)據(jù)結(jié)構(gòu)采用了 B+樹加雙向鏈表的形式實現(xiàn),N 階 B 樹其實就是每個節(jié)點最多存儲 N - 1 個鍵值對和 N 個指針,指向某個鍵值對的一邊,而 N 階 B+ 樹其實就是每個節(jié)點最多存儲 N - 1 個鍵和 N 個指針 ,只有葉子節(jié)點才存儲鍵值,一旦一個節(jié)點存儲的 Key 大于 N,中間元素會向上分裂;
而在索引中的 B+ 樹就是在葉子節(jié)點之間構(gòu)成一個雙向鏈表,用于范圍查詢。
3.什么是聚簇索引什么是非聚簇索引 ?
聚簇索引:一個表只能有一個聚簇索引,聚簇索引的葉子節(jié)點直接存儲行數(shù)據(jù),主鍵默認(rèn)是聚簇索引,如果沒有主鍵則隱式構(gòu)建 ROWID,優(yōu)點是通過索引就可以獲取到數(shù)據(jù),避免了回表查詢,缺點是插入速度依賴主鍵順序;
非聚簇索引:就是索引的葉子節(jié)點只存主鍵值,而非完整的數(shù)據(jù),一個表可以有多個非聚簇索引,通過索引找到主鍵后,需要回到聚簇索引獲取完整數(shù)據(jù)。
4.知道什么是回表查詢嘛 ?
回表查詢是查詢數(shù)據(jù)時通過非聚簇索引進行查詢,查詢出來的只是數(shù)據(jù)的主鍵,還需要通過主鍵去查詢聚簇索引,才能得到完整的數(shù)據(jù)。
5.索引創(chuàng)建原則有哪些?
1.高頻查詢字段:where,on,order by,group by 等高頻使用的字段;
2.高區(qū)分度字段:使用由高區(qū)分度的字段,ID,身份證而不是性別;
3.短字段優(yōu)先:使用整型而不是 VARCHAR;
4.覆蓋索引優(yōu)化:高頻查詢字段,可以建立聯(lián)合索引覆蓋查詢字段,達到不用回表查詢的目的;
5.范圍查詢字段放最后:將范圍查詢字段放最后,避免索引失效;
6.最左前綴匹配原則:只能最左前綴匹配,避免中間斷開;
6.知道什么是左前綴原則嘛 ?
如果索引了多列(聯(lián)合索引),要遵守最左前綴法則。最左前綴法則指的是查詢
從索引的最左列開始,并且不跳過索引中的列。如果跳躍某一列,索引將會部分
失效(后面的字段索引失效)。
7.知道什么叫覆蓋索引嘛 ?
覆蓋索引是指查詢使用了索引,并且需要返回的列,在該索引中已經(jīng)全部能夠找到 。
8.索引是越多越好嘛? 什么樣的字段需要建索引, 什么樣的字段不需要?
索引并不是多多益善,索引越多,維護索引結(jié)構(gòu)的代價也就越大,會影響增刪改的效率。針對于數(shù)據(jù)量較大,且查詢比較頻繁的表建立索引。
針對于常作為查詢條件(where)、排序(order by)、分組(group by)操作的字段建立索引。
不適合創(chuàng)建索引的字段:
-
-
- 更新頻繁字段不適合創(chuàng)建索引
- 若是不能有效區(qū)分?jǐn)?shù)據(jù)的列不適合做索引列(如性別,男女未知,最多也就三種,區(qū)分度實在太低)
- 對于那些查詢中很少涉及的列,重復(fù)值比較多的列不要建立索引。比如省會,城市、月份
- 對于定義為text、image和bit的數(shù)據(jù)類型的列不要建立索引
-