MySql中什么是索引?常用的索引有哪些种类?索引在什么情况下会失效?

什么是索引?
        索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引的优点:
1. 高效性: 利用索引可以提高数据库的查询 效率.
2. 唯一性: 索引可以确保所查的数据的唯一

3.完整性:用户可以加速表和表之间的连接,实现表与表之间的参照完整性

索引的缺点:

1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、
UPDATE和DELETE。
2.因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘
空间的索引文件。
3. 如果你在一个数据很多的表上创建了多种组合索引,索引文件的会膨胀很快。
MySql中有四种索引 分别为:
主键索引 : 在数据库关系图中为表定义一个主键将自动
创建主键索引。
CREATE TABLE `表名` (
`字段1` INT() AUTO_INCREMENT PRIMARY KEY, 
或者 PRIMARY KEY(`字段1`)
)

一张表只能有一个

唯一索引 : 不允许具有索引值相同的行,从而禁止重复
的索引或键值。
CREATE TABLE `表名` (
`字段1` INT() NOT NULL UNIQUE, 
或者 UNIQUE KEY(`字段1`)
)

一张表可以有很多个

常规索引 : 最基本的索引类型,没有
唯一性之类的限制。
CREATE TABLE `表名` (
`字段1` INT() NOT NULL,
INDEX/KEY(`字段1`)
)

一张表可以有很多个,但不宜过多,容易影响数据的增删改;

全文索引 : 搜索引擎的关键技术,用于检索文本信息,
可以是词语或者段落。
CREATE TABLE `表名` (
`字段1` VARCHAR(32) NOT NULL,,
fulltext key (字段名,字段名,字段名) with parser ngram
)ENGINE=innodb
注意:
1.Mysql 5.6 之前版本,只有 myisam 支持全文索引, 5.6 之后, Innodb myisam 均支持全文索引。
2. 只有 char varchar text 类型字段能创建全文索引。
3. 当大量写入数据时,建议先写入数据,后再建立全文索引,提高效率
索引失效的情况:
1、以%开头的like查询
2、数据类型出现隐式转化
3、组合索引,不满足最左原则
4、估计使用索引比全表扫描还慢
5、用or分割条件,若or前后只要有一个列没有索引
6、尽量避免使用!= 或 <>操作符,否则数据库引擎会放弃使用索引进行全表扫描。使用>或<会比较高效。
7、对字段进行null值判断:应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描
8、避免select * : 在解析的过程中,会将'*' 依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值