MySQL 索引操作

2021-08-15 03:20:58 字數 2997 閱讀 8441

前面說過。從型別上,索引可以分為單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引。從操作上,索引可以分為建立索引(建立表時建立索引,基於現有表建立索引)、查詢索引、刪除索引。下面將以普通索引為例,對索引操作進行詳細學習。

1.建立表時建立索引

格式:create table 表名[欄位名 資料型別]   [unique|fulltext|spatial|...]   [index|key]   [索引名字]   (欄位名[length])        [asc|desc]

普通建立表語句                     設定什麼樣的索引(唯

一、全文等)     索引關鍵字  索引名字   對哪個字段設定索引     對索引進行排序

例如:create table `emp2` (

`emp_id` int(11) not null auto_increment,

`emp_name` varchar(10) default null,

`salary` int(11) default null,

`birthday` date default null,

`telephone` varchar(11) default null,

primary key (`emp_id`),

index emp2_indexname (emp_name(10))

) engine=innodb auto_increment=120 default charset=gb2312;

2.基於現有表建立索引

在執行create table語句時可以建立索引,也可以單獨用create index或alter table來為表增加索引。

(1) alter table

alter table用來建立普通索引、unique索引或primary key索引。

alter table table_name add index index_name (column_list)

alter table table_name add unique (column_list)

alter table table_name add primary key (column_list)

其中table_name是要增加索引的表名,column_list指出對哪些列進行索引,多列時各列之間用逗號分隔。索引名index_name可選,預設時,mysql將根據第乙個索引列賦乙個名稱。另外,alter table允許在單個語句中更改多個表,因此可以在同時建立多個索引。

例如:alter table emp2 add index emp2_index_birthday(birthday);

(2) create index

create index可對表增加普通索引或unique索引。

create index index_name on table_name (column_list)

create unique index index_name on table_name (column_list)

table_name、index_name和column_list具有與alter table語句中相同的含義,索引名不可選。另外,不能用create index語句建立primary key索引。

例如:create index emp2_index_salary on emp2 (salary);

3.查詢索引

show index from tblname;

show keys from tblname;

例如:show index from emp2;

字段解釋:

table:表的名稱。

non_unique如果索引不能包括重複詞,則為0。如果可以,則為1。

key_name:索引的名稱。

seq_in_index:索引中的列序列號,從1開始。

column_name:列名稱。

collation:列以什麼方式儲存在索引中。在mysql中,有值『a』(公升序)或null(無分類)。

cardinality:索引中唯一值的數目的估計值。通過執行analyze table或myisamchk -a可以更新。基數根據被儲存為整數的統計資料來計數,所以即使對於小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,mysql使用該索引的機會就越大。

sub_part:如果列只是被部分地編入索引,則為被編入索引的字元的數目。如果整列被編入索引,則為null。

packed:指示關鍵字如何被壓縮。如果沒有被壓縮,則為null。

null:如果列含有null,則含有yes。如果沒有,則該列含有no。

index_type:用過的索引方法(btree, fulltext, hash, rtree)。

comment:多種評注。

4. 刪除索引

可利用alter table或drop index語句來刪除索引。類似於create index語句,drop index可以在alter table內部作為一條語句處理,語法如下。

drop index index_name on talbe_name

alter table table_name drop index index_name

alter table table_name drop primary key

其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。第3條語句只在刪除primary key索引時使用,因為乙個表只可能有乙個primary key索引,因此不需要指定索引名。如果沒有建立primary key索引,但表具有乙個或多個unique索引,則mysql將刪除第乙個unique索引。如果從表中刪除了某列,則索引會受到影響。對於多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除。如果刪除組成索引的所有列,則整個索引將被刪除。

例如:drop index emp2_index_birthday on emp2;

mysql 制定索引 mysql索引操作

mysql索引操作 索引初識 什麼是索引 索引相當於mysql的一種鍵,是儲存引擎能快速找到資料的一種資料結構,具有非常好的效能,尤其當表中資料很多時,索引就顯得尤為重要,索引優化是資料查詢效能優化的最有效的手段,它能將資料查詢速度提公升幾個數量級 既然索引如此優秀,是不是索引越多越好?答案當然是否...

mysql索引操作

1 作用分析 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1...

mysql除錯索引 MySQL索引的操作

索引的概念 資料庫物件索引其實與書的目錄類似,主要是為了提高從表中檢索資料的速度。2 根據索引的儲存型別可以將索引分為b型索引 btree 和雜湊索引 hash 3 mysql所支援的索引 普通索引 唯一索引 全文索引 單列索引 多列索引和空間索引。一 建立和檢視普通索引 1 建立表時建立普通索引 ...