一、MySQL索引為什么能讓查詢效率提高
DB在執行一條Sql語句的時候,默認的方式是根據搜索條件進行全表掃描。如果我們對某一字段增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度。
添加索引的話,首先去索引列表中查詢,而我們的索引列表是B類樹的數據結構,查詢的時間復雜度為O(log2N),定位到特定值得行就會非???,所以其查詢速度就會非???。
為什么說B+-tree比B 樹更適合實際應用中操作系統的文件索引和數據庫索引?
1)?B+-tree的磁盤讀寫代價更低
B+-tree的內部結點并沒有指向關鍵字具體信息的指針。因此其內部結點相對B 樹更小。如果把所有同一內部結點的關鍵字存放在同一盤塊中,那么盤塊所能容納的關鍵字數量也越多。一次性讀入內存中的需要查找的關鍵字也就越多。相對來說IO讀寫次數也就降低了。
舉個例子,假設磁盤中的一個盤塊容納16bytes,而一個關鍵字2bytes,一個關鍵字具體信息指針2bytes。一棵9階B-tree(一個結點非常多8個關鍵字)的內部結點需要2個盤快。而B+?樹內部結點只需要1個盤快。當需要把內部結點讀入內存中的時候,B 樹就比B+?樹多一次盤塊查找時間(在磁盤中就是盤片旋轉的時間)。
2)?B+-tree的查詢效率更加穩定
由于非終結點并不是最終指向文件內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查找必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每一個數據的查詢效率相當。
延伸閱讀:
二、什么是數據庫和數據庫管理系統
數據庫的應用非常廣泛,舉個例子,我們平時在瀏覽器上搜索內容,就要用到數據庫去檢索我們的關鍵字。以前我們可能會用數組、集合、文件等來存儲數據,但是接下來我們就會面臨一個問題,當存儲的數據或內容過多的時候,我們如何去精準的找到我們需要的東西,這時候數據庫管理系統就派上了用場。除此之外,數據庫管理系統還能永久的儲存我們的數據。
為了便于大家理解,這里先給大家講解幾個概念
DB數據庫(database):存儲數據的“倉庫”。它保存了一系列有組織的數據。
DBMS數據庫管理系統(Database Management System):數據庫是通過DBMS創建和操作的容器。
SQL,結構化查詢語言(Structured Query Language)用一句話概括,SQL是一種特殊目的的編程語言,一種專門用來與數據庫通信的語言。在數據庫中,數據被結構化并存儲在不同的表中,從而簡化了訪問,更新和操作數據的過程。該表由列和行組成。數據庫中的表可以在關系的幫助下進行連接。要在數據庫中執行與數據相關的任務,可以使用SQL。SQL代表結構化查詢語言,旨在在特定RDBMS內創建,修改和管理數據庫中的數據。
SQL優點:
1、不是某個特定數據庫供應商專有的語言,幾乎所有DBMS(數據庫管理系統)都支持SQL
2、簡單易學
3、雖然簡單,但實際上是一種強有力的語言,靈活使用其語言元素,可以進行非常復雜和高級的數據庫操作。