MYSQL索引的作用和創建


索引是查詢優化最主要的方式;

查詢方式:

一種是:全表掃描;

一種是:利用數據表上建立的所以進行掃描。

如:對表中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);

 

 

 

 


免責聲明!

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



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