索引出識

  • 索引

    1. 是什麼:索引是幫助mysql高效獲得數據的數據結構。一種排好序的快速查找數據結構

    2. 索引具體描述:數據本身之外,數據庫還維護着一個滿足特定查找算法的數據結構,這些數據結構以某種方式指向數據,這樣就可以在這些數據結構的基礎上實現高級的查找算法,這種數據結構就是索引

    3. 結論:一般來說索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲在磁盤上。我們通常所說的索引,如果沒有特別指明,都是指B樹(多路搜索樹,並不一定是二叉樹)結構組織的索引。其中聚集索引、次要索引、覆蓋索引符合索引、前綴索引、唯一索引都是使用B+樹,統稱索引。除了B+樹索引,還有hash索引等等

    4. 創建索引的目的是什麼:提高查詢效率,可以類比字典

    5. 索引會影響where後面 的查找和order by後面的排序

    6. 索引優勢

      1. 提高數據檢索的效率,降低數據庫的IO成本

      2. 通過索引列對數據進行排列,降低數據排序的成本,降低CPU的損耗

    7. 索引的劣勢

      1. 實際上索引也是一張表,該表保存了主鍵與索引字段,並指向實體表的記錄,所以索引也是要佔用空間的

      2. 雖然索引大大提高了查詢效率,同時卻降低了更新表的速度,如對錶進行insert、delete、update,因爲更新表的時候,Mysql不僅要保存數據,還要保存一下索引文件每次更新添加了索引的字段,都會調整因爲更新所帶來的鍵值變化後的索引信息

      3. 索引只是提高效率的一個因素,如果Mysql中有大數據量的表,就需要花時間研究建立最優秀的索引,或優化查詢

    8. 索引的分類

      1. 單值索引:一個索引只包含單個列,一個表可以有多個單列索引

      2. 唯一索引:索引列的值必須唯一,但允許有空值

      3. 符合索引:一個索引包含多個列

      4. 基本語法

        <!--創建索引-->
        1.CREATE [UNIQUE] INDEX indexName ON myTable(cloumnName(length));
        2.ALTER myTable ADD [UNIQUE] INDEX[indexName] ON (columnName(length));
        <!--刪除索引-->
        DROP INDEX [indexName] ON myTable;
        <!--查看命令-->
        SHOW INDEX FROM table_name\G
        <!--通過以下四種方式進行索引的添加-->
        ALTER TABLE tbl_name ADD PRIMARY KEY(cloumn_list);該語句添加了一個主鍵,這意味着索引 值必須是唯一的,且不能爲NULL
        ALTER TABLE tbl_name ADD UNIQUE index_name(column_list);該語句創建索引的值必須是唯一的(除了NULL之外,NULL可能會出現多次)
        ALTER TABLE tbl_name ADD INDEX index_name(column_list);添加普通索引,索引值可出現多次
        ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list),該語句指定了索引爲FULLTEXT,用於全文索引
    9. mysql索引結構

      1. BTree索引

        1. 參考https://blog.csdn.net/li1325169021/article/details/113664569

      2. Hash索引

      3. full-text全文索引

      4. R-Treesuoyin

  • 哪些情況下需要創建索引

    1. 主鍵自動建立唯一索引

    2. 頻繁作爲查詢條件的應該創建索引

    3. 查詢中與其他表關聯的字段,外鍵關係建立索引

    4. where條件中用不到的字段不要創建索引

    5. 查詢中排序 字段,排序字段若通過索引去訪問將大大的提高排序速度

    6. 查詢中統計或者分組字段

  • 哪些情況下不要創建索引

    1. 表記錄太少

    2. 經常增刪改的表:提高了查詢表的速度,同時卻會降低更新表的速度,因爲在更新表數據的時候,還要更新索引文件

    3. 數據重複且分佈平均的表字段,因此應該只爲最經常查詢和最經常排序的數據建立索引,因爲如果某個數據列包含很多重複的內容,爲他建立索引就沒有必要

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章