首頁  >  文章  >  資料庫  >  有關索引的知識點

有關索引的知識點

时间把记忆冲淡
时间把记忆冲淡原創
2020-05-10 15:04:02105瀏覽

什麼是索引?

索引是一種儲存引擎快速找到記錄的資料結構,也可說就是資料的目錄。索引檔以B-Tree格式儲存

索引的作用?

1.索引能加快資料的檢索查找,也能加快資料的分組和排序;
2.索引能保證資料的唯一性
3.索引能加快關係表的連線速度

索引的缺點?

1.索引的建立和維護需要消耗時間,且隨索引量的增加而增加
2.索引的建立需要消耗物理空間
3.表中資料進行增刪改時,索引也需要動態維護

為什麼能夠提高查詢速度?

主要是順序查找的效率要比B tree的結構查找效率低(這個待詳細了解)

索引類型?

1.主鍵索引
primark key 它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引。注意:一個表只能有一個主鍵。
2.唯一索引
唯一索引設定的關鍵字unique 唯一索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。
3.普通索引
這是最基本的索引,它沒有任何限制。
4.複合索引
即一個索引包含多個資料列,多用於避免回表查詢
5.全文索引

1.  -- 1.新增PRIMARY KEY(主鍵索引)
   
    ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) ;
   
2.  -- 2.新增UNIQUE(唯一索引)
## ALTER TAB `table_ALTER `table_`table) UNIQUE (`column`);
   
3.  -- 3.新增INDEX(普通索引)
   
 ALTER TABLE `table_name` ADD INDEX index_name (`column`);# # #4.  -- 4.新增FULLTEXT(全文索引)
   
 ALTER TABLE `table_name` ADD FULLTEXT (`column`);
   
5.  -- 5.新增多列索引
#    
ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`);


索引一經建立不能修改,如果要修改索引,只能刪除重建。可以使用DROP INDEX index_name ON table_name;刪除索引。

重點

為什麼在單列索引的基礎上還需要組合索引?

因為在不建立組合索引的前提下 mysql只會用到其中一個最有效率的索引 ,效率平庸

組合索引的最左邊原則是什麼?

組合索引usernname,city,age,其實相當於分別建立了下面三組組合索引:
1.usernname,city,age ;2.usernname,city;3.usernname
為什麼沒有city,讓age這樣的組合索引?這是因為MySQL組合索引「最左前綴」的結果。簡單的理解就是只從最左邊的開始組合。並不是只要包含這三列的查詢都會用到該組合索引,下面的幾個SQL就會用到這個組合索引:

SELECT * FROM mytable WHREE username="admin" AND city="鄭州"SELECT * FROM mytable WHREE username="admin"

#而下面幾個則不會用到:

SELECT * FROM mytable WHREE age=20 AND city="鄭. mytable WHREE city="鄭州"

建立索引的原則:

  1. 最左原則

  2. #基數小的表最好不要建立索引

  3. 盡量選擇區分度高的資料列作為索引

  4. 盡量的擴充索引,不要新建索引。

  5. 為經常需要作為查詢條件、排序、分組和聯合運算的欄位建立索引

  6. 限制索引的數目,不要盲目地建立索引

  7. 盡量使用資料量少的索引,使用前綴做索引

  8. 刪除不再使用或很少使用的索引

#關於索引的最佳化:

  1. #避免在索引列上使用計算

  2. #避免在索引列上使用not

  3. 避免在索引列上使用is null 和is not null

  4. 遵守索引的最左原則

  5. 應盡量避免在where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描

  6. 模糊查詢不能前置百分號,否則導致全表掃描

  7. #where 子句中使用or 來連接條件將導致引擎放棄使用索引而進行全表掃描

  8. 如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不會使用索引

#

以上是有關索引的知識點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn