1. 程式人生 > >資料庫索引建立

資料庫索引建立

MySQL 普通索引、唯一索引和主索引

1、普通索引  mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

  普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(WHEREcolumn=)或排序條件(ORDERBYcolumn)中的資料列建立索引。只要有可能,就應該選擇一個數據最整齊、最緊湊的資料列(如一個整數型別的資料列)來建立索引。

  2、唯一索引 mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` )

  普通索引允許被索引的資料列包含重複的值。比如說,因為人有可能同名,所以同一個姓名在同一個“員工個人資料”資料表裡可能出現兩次或更多次。

  如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。這麼做的好處:一是簡化了MySQL對這個索引的管理工作,這個索引也因此而變得更有效率;二是MySQL會在有新記錄插入資料表時,自動檢查新記錄的這個欄位的值是否已經在某個記錄的這個欄位裡出現過了;如果是,MySQL將拒絕插入那條新記錄。也就是說,唯一索引可以保證資料記錄的唯一性。事實上,在許多場合,人們建立唯一索引的目的往往不是為了提高訪問速度,而只是為了避免資料出現重複。

  3、主索引 mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

  在前面已經反覆多次強調過:必須為主鍵欄位建立一個索引,這個索引就是所謂的“主索引”。主索引與唯一索引的唯一區別是:前者在定義時使用的關鍵字是PRIMARY而不是UNIQUE。

  4、外來鍵索引 mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

  如果為某個外來鍵欄位定義了一個外來鍵約束條件,MySQL就會定義一個內部索引來幫助自己以最有效率的方式去管理和使用外來鍵約束條件。

  5、複合索引 mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

  索引可以覆蓋多個數據列,如像INDEX(columnA,columnB)索引。這種索引的特點是MySQL可以有選擇地使用一個這樣的索引。如果查詢操作只需要用到columnA資料列上的一個索引,就可以使用複合索引INDEX(columnA,columnB)。不過,這種用法僅適用於在複合索引中排列在前的資料列組合。比如說,INDEX(A,B,C)可以當做A或(A,B)的索引來使用,但不能當做B、C或(B,C)的索引來使用。

  6、索引的長度

  在為CHAR和VARCHAR型別的資料列定義索引時,可以把索引的長度限制為一個給定的字元個數(這個數字必須小於這個欄位所允許的最大字元個數)。這麼做的好處是可以生成一個尺寸比較小、檢索速度卻比較快的索引檔案。在絕大多數應用裡,資料庫中的字串資料大都以各種各樣的名字為主,把索引的長度設定為10~15個字元已經足以把搜尋範圍縮小到很少的幾條資料記錄了。在為BLOB和TEXT型別的資料列建立索引時,必須對索引的長度做出限制;MySQL所允許的最大索引全文索引文字欄位上的普通索引只能加快對出現在欄位內容最前面的字串(也就是欄位內容開頭的字元)進行檢索操作。如果欄位裡存放的是由幾個、甚至是多個單詞構成的較大段文字,普通索引就沒什麼作用了。這種檢索往往以的形式出現,這對MySQL來說很複雜,如果需要處理的資料量很大,響應時間就會很長。

  這類場合正是全文索引(full-textindex)可以大顯身手的地方。在生成這種型別的索引時,MySQL將把在文字中出現的所有單詞建立為一份清單,查詢操作將根據這份清單去檢索有關的資料記錄。全文索引即可以隨資料表一同建立,也可以等日後有必要時再使用下面這條命令新增:

  ALTERTABLEtablenameADDFULLTEXT(column1,column2)有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個或多個給定單詞的資料記錄了。下面是這類查詢命令的基本語法:

  SELECT*FROMtablename

  WHEREMATCH(column1,column2)AGAINST(‘word1','word2','word3’)

  上面這條命令將把column1和column2欄位裡有word1、word2和word3的資料記錄全部查詢出來。

顯示錶索引

show index from table_name

 

轉自https://www.cnblogs.com/interdrp/p/8031087.html