mysql在建表語句中添加索引


普通索引創建

創建普通索引,即不添加 UNIQUE、FULLTEXT 等任何參數。

【例】創建表名為 score 的數據表,並在該表的 id 字段上建立索引,SQL 語句如下:

CREATE table score(
    id  int(11)  AUTO_INCREMENT  primary  key  not  null,
    name  varchar(50)  not null,
    math  int(5)  not null,
    English  int (5)  not null,
    Chinese  int (5) not  null,
    index(id)
);

此時在id字段上建立的普通索引名字為id,在id字段建立的,索引方法為BTREE,索引類型為normal

創建唯一索引

創建唯一索引時,使用 UNIQUE 參數進行約束。

【例】創建表名為 address 的數據表,並在該表的 id 字段上建立唯一索引,SQL 語句如下:

CREATE  table address(
    id  int(11)  auto_increment  primary  key  not  null,
    name  varchar(50),
    address  varchar(200),
    UNIQUE  INDEX  address(id  ASC)
);

此時在id字段上建立的唯一索引,索引名字為address,索引方法BTREE為,索引類型為Unique

創建前綴索引(某字段前*個字節)

創建單列索引,即在數據表的單個字段上創建索引。創建該類型索引不需要引入約束參數,用戶在建立時只需要指定單列字段名,即可創建單列索引。

【例】創建名稱為  telephone  的數據表,並指定在  tel  字段上建立名稱為  tel_num  的單列索引,SQL  語句如下:

create  table  telephone(
    id  int(11)  primary key auto_increment  not  null,
    name  varchar(50)  not  null,
    tel  varchar(50)  not null,
    index  tel_num(tel(20))
);

此時在tel字段上建立的普通索引,索引名字為tel_num,索引方法為BTREE,索引類型為normal,索引取的是tel字段前20為字節建立索引

前綴索引無法使用覆蓋索引

創建全文索引

全文索引只能作用在 CHAR、VARCHAR、TEXT、類型的字段上。創建全文索引需要使用 FULLTEXT 參數進行約束。

【例】創建表名為 cards 的數據表,並在該表的 name 字段上建立全文索引,SQL 語句如下:

create  table cards(
    id int(11)  auto_increment  primary key  not  null,
    name  varchar(50),
    number  bigint(11),
    info  varchar(50),
    FULLTEXT  KEY  cards_number(name)
);

此時在name字段上建立的全文索引,索引名字為cards_number,索引方法為空(沒有),索引類型為FULL TEXT

創建多列索引

創建多列索引即指定表的多個字段即可實現。

【例】創建名稱為 information 的數據表,並指定 name 和 sex 為 多列索引,SQL 語句如下:

create table  information(
    inf_id  int(11)  auto_increment  primary  key  not  null,
    name  varchar(50)  not  null,
    sex  varchar(5)  not null,
    birthday  varchar(50)  not  null,
    index  info(name,sex)
);

此時在name,sex字段上建立的普通聯合索引,索引名字為info,索引方法為BTREE,索引類型為normal

創建空間索引(在MyISAM上)

創建空間索引時,需要設置 SPATIAL 參數。同樣,必須說明的是,只有 MyISAM 類型表支持該類型索引。而且,索引字段必須有非空約束。

【例】創建一個名稱為 list 的數據表,並創建一個名為 listinfo 的空間索引,SQL語句如下:

create  table  list(
    id  int(11)  primary  key  auto_increment  not null,
    goods  geometry  not  null,
    SPATIAL  INDEX  listinfo(goods)
)engine=MyISAM;

goods  字段上已經建立名稱為  listinfo 的空間索引,其中  goods  字段必須不能為空,且數據類型是  GEOMETRY,該類型是空間數據類型。空間類型不能用其他類型代替,否則在生成空間素引時會產生錯誤且不能正常創建該類型索引。

空間類型除了上述示例中提到的 GEOMETRY 類型外,還包括如  POINT、LINESTRING、POLYGON  等類型,這些空間教據類型在平常的操作中很少被用到。

參考

原文鏈接:https://blog.csdn.net/qq_41573234/article/details/80250279


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM