關於 MySQL索引的注意點

來源:互聯網
上載者:User

關於 MySQL索引的注意點

索引

其實資料庫中的資料是按頁存放的
其實索引也是按頁存放的
所以本質上索引也占硬碟空間(以最小的消耗,換取最大的利益)

索引是一種有效組合資料的方式!為快速尋找到指定記錄做鋪墊

目的就是快速或者某個記錄!提高了資料庫的檢索速度!
作用:
大大提高資料庫的檢索速度
改善資料庫效能

MySQL索引儲存類型分類
  01.B-樹索引:InnoDB,MyISAM均支援
  02.雜湊索引

其實索引是把雙刃劍(利弊共存),如果使用不當,反而會降低索引效能

主鍵:加快檢索資料/唯一標識

常用索引類型:
  01.普通索引:允許在定義為索引的列中 出現 重複值和空值!
  02.唯一索引:索引列不允許出現重複值,但是可以出現一個空值!
  03.主鍵索引:建立主鍵的時候,系統會預設建立一個主鍵索引!唯一!不可為空!
  04.複合索引:將我們的多個列組合起來!(name,sid)姓名和社會安全號碼!
  05.全文索引:允許值的全文檢索查詢!允許空值和重複值!適合在一個內容比較多的列!text!
  06.空間索引:對空間資料類型的列建立的索引

■按照下列標準選擇建立索引的列
頻繁搜尋的列
經常用作查詢選擇的列
經常排序、分組的列
,經常用作串連的列(主鍵/外鍵)
■請不要使用下面的列建立索引
僅包含幾個不同值的列
表中僅包含幾行

Eg:

--  查詢指定表的索引
SHOW INDEX FROM student;
TABLE:索引所在的表
Non_unique:索引是否唯一  0:唯一  1:不唯一
key_name:索引名稱
seq_in_index:該列在索引中的位置
column_name:定義所用的列名稱
null:該列是否為空白
index_type:索引類型   

--  給姓名增加 普通索引
CREATE  INDEX index_studentName
ON student(studentName);
-- 給學生姓名和社會安全號碼 增加 複合式索引
CREATE INDEX index_name_sid
ON student(studentName,identityCard)

--  刪除索引
DROP INDEX index_name_sid ON  student;
DROP  INDEX index_studentName ON  student;

--  建立索引的原則
  01.經常被查詢的列
  02.經常用作選擇的列
  03.經常排序,分組的列
  04.經常用作串連的列(主鍵/外鍵)

使用索引時的注意事項:
  01.查詢時減少使用*返回全部的列,不要返回不需要的列!
  02.索引盡量要少,在位元組數小的列上建立索引!
  03.where字句中有多個條件運算式的時候,包含索引的列要放在其他運算式之前!
  04.在order by的字句中避免使用運算式!

本文永久更新連結地址:https://www.bkjia.com/Linux/2018-02/151074.htm

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.