MySQL学习2---索引

MySQL 索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

 

普通索引

创建普通索引

CREATE INDEX indexName ON mytable(列名);

修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(列名);

创建表的时候直接指定

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);

创建唯一性索引

CREATE UNIQUE INDEX index_name ON table_name;

 

创建主键索引

创建表的时候同时创建主键,主键索引自动创建;

CREATE TABLE table_name ([...], PRIMARY KEY(列名))

另外一种是已经创建表,没有指定主键,然后修改表加入主键,自动创建主键索引

ALTER TABLE table_name ADD PRIMARY KEY 列名;

 

创建多列索引

CREATE INDEX index_name ON table_name(列名1,列名2);
例如:
MariaDB [test]> create index salary_age_index on IT_salary(薪资,年龄);

删除索引的语法

直接删除索引;
DROP INDEX [indexName] ON mytable;

修改表格时删除索引;
ALTER TABLE table_name DROP INDEX index_name;

删除主键索引:
ALTER TABLE table_name DROP PRIMARY KEY;

查看索引

SHOW INDEX FROM table_name;

SHOW KEYS FROM tabel_name;

 









 
posted @ 2018-04-18 22:43  youxxn  阅读(113)  评论(0编辑  收藏  举报