MySQL索引

来源:互联网 发布:淘宝导航字体颜色代码 编辑:程序博客网 时间:2024/06/16 22:21

MySQL数据库中有多条数据时,直接通过select * tablename where fieldname="xx";查询,Mysql会扫描所有数据,数据库里有N条数据,要查询N(如:N=200000)条数据,会导致慢查询,可以通过建立索引来优化,类似java里的map集合和python里的字典,通过建立索引,可以快速查询。
索引有:

1.主键索引

它是一种特殊的唯一索引,不允许有空值,一般是在建表的时候同时创建主键索引:

create table tablename(id int not null,fieldname varchar(16) not null,primary key(id));也可以用 ALTER 命令。

2.唯一索引

与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。它有以下几种创建方式:

create index indexPhoneName on phone(PhoneName(length));//修改表结构ALTER mytable ADD UNIQUE [indexName] ON (username(length));//创建表的时候直接指定create table tablename(id int not null,username varchar(16) not null,unique[indexName](fieldname(length))); 

3.普通索引

最基本的索引,它没有任何限制。它有以下几种创建方式:

(1).创建索引

create index indexPhoneName on phone(PhoneName);

对于CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length;
(2).修改表结构

ALTER tablename ADD INDEX [indexName] ON (fieldname(length))//创建表的时候直接指定CREATE TABLE tablename(id int not null,username VARCHAR(16) not null,index [indexName](username(length))); //删除索引的语法:DROP INDEX [indexName] ON mytable;

4.全文索引

仅可用于 MyISAM 表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时好空间。

5.组合索引

为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。

建立索引的缺点
1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件

2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
参考:MySQL索引类型总结和使用技巧以及注意事项
http://www.jb51.net/article/49346.htm

原创粉丝点击