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万+

被折叠的 条评论
为什么被折叠?



