1. 程式人生 > >為已經存在的表上建立索引

為已經存在的表上建立索引

1、使用 ALTER TABLE 語句建立索引

#在book表中的bookname欄位上建立名為BkNameIdx的普通索引
MariaDB [vincen]> ALTER TABLE book add index BkNameIdx(bookname(30));
#格式:ALTER TABLE 資料表名 add 索引型別 索引名稱(欄位);

查看錶中的索引資訊

MariaDB [vincen]> show index from book \G
*************************** 1. row ***************************
        Table: book              #表示建立索引的表,book表
   Non_unique: 1                 #索引是否唯一,1代表非唯一,0代表唯一
     Key_name: BkNameIdx         #索引的名稱是BkNameIdx
 Seq_in_index: 1                 #表示這個欄位在索引中的位置
  Column_name: bookname          #表示定義索引的列欄位
    Collation: A
  Cardinality: 0
     Sub_part: 30                #表示索引的長度
       Packed: NULL
         Null:                   #表示該欄位是否能為空值
   Index_type: BTREE             #表示索引的型別
      Comment: 
Index_comment: 

 2、使用 CREATE INDEX 建立索引

建立一張新表

MariaDB [vincen]> CREATE TABLE books
    -> (
    -> bookid          INT NOT NULL,
    -> bookname        VARCHAR(255) NOT NULL,
    -> authors           VARCHAR(255) NOT NULL,
    -> info              VARCHAR(255) NULL,
    -> comment          VARCHAR(255) NULL,
    -> year_publication   YEAR NOT NULL
    -> );

使用 CREATE INDEX 建立索引

#在books表中的bookname欄位上建立名為BkNameIdx的普通索引
MariaDB [vincen]> CREATE INDEX BkNameIdx ON books(bookname);
#格式:CREATE 索引型別 索引名稱 ON 資料表名(欄位);

 檢視索引資訊

MariaDB [vincen]> show index from books \G
*************************** 1. row ***************************
        Table: books
   Non_unique: 1
     Key_name: BkNameIdx
 Seq_in_index: 1
  Column_name: bookname
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 

可以看到 CREATE INDEX 語句和 ALTER INDEX 語句的語法基本一樣,只是關鍵字不同