MYSQL索引的作用和建立

2022-08-15 04:45:08 字數 4039 閱讀 8866

查詢方式:

一種是:全表掃瞄;

一種是:利用資料表上建立的所以進行掃瞄。

如:對錶中name欄位建立索引;則按照表中name欄位進行索引排序,並為其建立指向資料表中記錄所在位置的「指標」。

mysql索引根據用途分為:

1.普通索引:列值可以取空值或重複值。建立使用關鍵字index或key;

2.唯一索引:列值不能重複;即索引列值必須是唯一的,但可以是空值;建立使用關鍵字unique;

3.主鍵索引:主鍵索引是系統自動建立的主鍵索引,並且是唯一的。與唯一索引區別是;列值不能為空

4.聚簇索引:就是資料儲存的物理儲存順序,非聚簇索引就是索引順序與資料的物理順序無關。乙個表只能有乙個聚簇索引。目前只有inodb和soliddb支援。

5.全文索引:只能建立在varchar或text的列上;建立全文索引能夠在全文索引的列上進行查詢。

(1)單列索引:就是乙個索引只包含表中的乙個列;比建立乙個學號id的索引;以name再建立乙個姓名的單列索引。即每個索引包含乙個列。

(2)組合索引(復合索引或多列索引):就是表中的兩個列或多個列來建立成乙個索引;比如;以使用者id、使用者名稱name、使用者年齡age來建立的索引就是聯合索引。

排序規則是;左字首原則:即先按照使用者id,排序後;當第一列值相同的情況下;則按照使用者名稱name第二列判刑;依次類推。

create table `admin` (

`id` int(11) not null auto_increment comment '使用者id',

`username` varchar(50) not null,

`password` varchar(256) not null,

`email` varchar(64) not null,

`status` tinyint(1) not null default '1',

primary key (`id`), #表示主鍵預設是索引;而且不允許為空

unique key `user_name` (`username`) #唯一索引;改列不能重複;但可以為空

) engine=myisam auto_increment=1002 default charset=utf8 comment='管理員';

建立表索引語句:

drop table if exists my_test;

create table my_test(

id int(11) not null unique auto_increment,

name varchar(10) not null default 0,

age int(11) not null default 0

) engine=innodb charset=utf8;

#檢視表my_test的全部索引

show index from my_test;

#建立索引

create index index_n on my_test(name); #為表my_text中的列name建立普通索引名稱index_n

create index index_age on my_test(age desc); #為age做降序索引

create index index_age_name on my_test(age,name desc);#建立表列age和name的聯合索引;按照age公升序後再按照name降序排序

#刪除索引

drop index index_n on my_test;

#修改索引

alter table my_test drop index index_age;#刪除索引

alter table my_test add index index_age(age);

查詢方式:

一種是:全表掃瞄;

一種是:利用資料表上建立的所以進行掃瞄。

如:對錶中name欄位建立索引;則按照表中name欄位進行索引排序,並為其建立指向資料表中記錄所在位置的「指標」。

mysql索引根據用途分為:

1.普通索引:列值可以取空值或重複值。建立使用關鍵字index或key;

2.唯一索引:列值不能重複;即索引列值必須是唯一的,但可以是空值;建立使用關鍵字unique;

3.主鍵索引:主鍵索引是系統自動建立的主鍵索引,並且是唯一的。與唯一索引區別是;列值不能為空

4.聚簇索引:就是資料儲存的物理儲存順序,非聚簇索引就是索引順序與資料的物理順序無關。乙個表只能有乙個聚簇索引。目前只有inodb和soliddb支援。

5.全文索引:只能建立在varchar或text的列上;建立全文索引能夠在全文索引的列上進行查詢。

(1)單列索引:就是乙個索引只包含表中的乙個列;比建立乙個學號id的索引;以name再建立乙個姓名的單列索引。即每個索引包含乙個列。

(2)組合索引(復合索引或多列索引):就是表中的兩個列或多個列來建立成乙個索引;比如;以使用者id、使用者名稱name、使用者年齡age來建立的索引就是聯合索引。

排序規則是;左字首原則:即先按照使用者id,排序後;當第一列值相同的情況下;則按照使用者名稱name第二列判刑;依次類推。

create table `admin` (

`id` int(11) not null auto_increment comment '使用者id',

`username` varchar(50) not null,

`password` varchar(256) not null,

`email` varchar(64) not null,

`status` tinyint(1) not null default '1',

primary key (`id`), #表示主鍵預設是索引;而且不允許為空

unique key `user_name` (`username`) #唯一索引;改列不能重複;但可以為空

) engine=myisam auto_increment=1002 default charset=utf8 comment='管理員';

建立表索引語句:

drop table if exists my_test;

create table my_test(

id int(11) not null unique auto_increment,

name varchar(10) not null default 0,

age int(11) not null default 0

) engine=innodb charset=utf8;

#檢視表my_test的全部索引

show index from my_test;

#建立索引

create index index_n on my_test(name); #為表my_text中的列name建立普通索引名稱index_n

create index index_age on my_test(age desc); #為age做降序索引

create index index_age_name on my_test(age,name desc);#建立表列age和name的聯合索引;按照age公升序後再按照name降序排序

#刪除索引

drop index index_n on my_test;

#修改索引

alter table my_test drop index index_age;#刪除索引

alter table my_test add index index_age(age);

索引的作用和為什麼要建立索引

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

索引的作用和為什麼要建立索引

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

mysql 建立索引和刪除索引

索引的建立可以在create table語句中進行,也可以單獨用create index或alter table來給表增加索引。刪除索引可以利用alter table或drop index語句來實現。1 使用alter table語句建立索引。語法如下 alter table table name ...