mysql使用的數(shù)據(jù)結構 為什么MySQL數(shù)據(jù)庫索引選擇使用B 樹?
為什么MySQL數(shù)據(jù)庫索引選擇使用B 樹?MySQL索引數(shù)據(jù)結構,為什么先用B樹從數(shù)據(jù)結構的角度來回答。B-tree和B-tree之間最重要的區(qū)別之一是B-tree只有葉節(jié)點來存儲數(shù)據(jù),其他節(jié)點用于索
為什么MySQL數(shù)據(jù)庫索引選擇使用B 樹?
MySQL索引數(shù)據(jù)結構,為什么先用B樹從數(shù)據(jù)結構的角度來回答。
B-tree和B-tree之間最重要的區(qū)別之一是B-tree只有葉節(jié)點來存儲數(shù)據(jù),其他節(jié)點用于索引。B樹意味著每個索引節(jié)點都有一個數(shù)據(jù)字段。這就決定了B-tree更適合存儲外部數(shù)據(jù),即所謂的磁盤數(shù)據(jù)。
數(shù)據(jù)結構中B樹、B 樹的區(qū)別?
這兩種數(shù)據(jù)結構之間的區(qū)別如下:
1。在B-樹中,相同的鍵值不會出現(xiàn)很多次,它可能出現(xiàn)在葉節(jié)點或非葉節(jié)點中。為了保持B-樹的平衡,B-樹的密鑰必須出現(xiàn)在葉子節(jié)點上,在非葉子節(jié)點上可能會重復出現(xiàn)。
2.由于B樹密鑰的位置是不確定的,在整個樹結構中只出現(xiàn)一次,雖然可以節(jié)省存儲空間,但是插入和刪除的操作復雜度大大增加。B樹是一個更好的折衷方案。
3.B樹的查詢效率與密鑰在樹中的位置有關。最大時間復雜度與B樹(葉節(jié)點)相同,最小時間復雜度為1(根節(jié)點)。對于已建樹,B-樹的復雜度是固定的。
怎樣用mysql查詢樹結構數(shù)據(jù)?
當然,這種結構不應該追求任何效率。如果你想提高效率,你只能改變表的結構。1:從表P1、表p2中選擇p2.id,其中P1.id=p2.pid和P1.id=0。2:假設表名為treesql code選擇distinct a.id from tree作為內(nèi)部連接樹作為B on(a.pid=B.pid),其中B.pid>=0選擇distinct a.id from tree作為內(nèi)部連接樹作為B on(a.pid=B.pid),其中B.pid>=23。在mysql中,不能用一句SQL來實現(xiàn)。