MySQL的索引

MySQL的索引种类:

1. 普通索引

  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度,因此,应该只为那些最经常出现在查询条件(WHERE column=)或者排序条件(ORDERBY column)中的数据列创建索引。

CREATE INDEX indexName ON mytable(username(length));--创建索引
ALTER table tableName ADD INDEX indexName(columnName);--更改表结构创建索引

2. 唯一索引

  与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

3. 主键索引

  是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值

4. 全文索引

  全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表,作用于CHAR,VARCHAR、TEXT数据类型的列。

5. 组合索引(复合索引)

  在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,对于多列索引来说(a,b,c)其相当于3个索引(a),(a,b),(a,b,c)3个索引,又由于mysql的索引优化器,其where条件后的语句是可以乱序的,比如(b,c,a)也是可以用到索引。

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` );

最左匹配原则详见链接点击这里这里

2.索引是不是越多越好

答案:是并不是越多越好,原因如下:
1。虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行插入,更新和删除。因为更新表时,不仅要保存数据,还要保存一下索引文件.
2。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会增长很快。索引只是提高效率的一个因素,如果有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

3.索引的数据结构是什么?
答案:索引的数据结构是B-Tree和B + Tree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值