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
阅读全文
0 0
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- mysql索引
- mysql索引
- mysql 索引
- MySql索引
- Mysql索引
- mysql 索引
- mysql 索引
- MySQL索引
- mysql索引
- mysql 索引
- mysql索引
- mysql 索引
- MySQL索引
- mysql索引
- Django 之 (5)Django 部署(Nginx)
- numpy的问题
- 结合源码谈谈 runtime 特性的应用场景(持续更新中)
- 通过PUTTY实现win向远程Linux(CentOS)传输文件
- java 网络
- MySQL索引
- java加密与解密的艺术(四)——散列函数(哈希函数)
- K-means++ 图像分割
- Java中Scanner的next()和nextLine()区别
- 如何配置jdk环境变量
- Unity3D PlayerPrefs 存取二进制数据
- 组队赛 A Promotions 深搜+逆向思维
- 5.16解题报告
- 记忆化01背包 我爱洗衣服啊