1、索引是什么
索引是一种数据结构,通常以文件的形式存储在磁盘上,一般默认结构是b+树结构
优势:优化后的索引可以提高数据检索的效率,降低数据库的IO成本,提升性能,降低CPU的消耗
劣势:索引列也是以表的形式存在,保存主键和索引字段,索引表需要占用空间,仅能提高查询的速度,如果表频繁带有insert,update,delete等操作,建议不使用索引。因为进行上述操作,mysql也需要重新构建索引表,带来了性能上的损耗
2、索引的命名规则
create index idx_students_name
3、索引的种类
分为单值索引和复合索引
例2的举例就是单值索引
复合索引命名规则:类似于java的方法命名,字段之间使用大写字母,方便知道这个索引有哪些列,便于后期维护
create index idx_students_nameAge(name,age)
4、建立的原则
优先建立复合索引,同时一张表的索引个数不要超过5个!
创建:
①:主键自动建立唯一的索引
②:当某个字段频繁的作为查询条件的字段应该建议索引,如:频繁地用到按日期查询
③:查询中需要统计或者分组的字段,如select count(sex) as sex, class from students group by class
④:查询排序的字段建立索引
不创建:
①:更新频繁的字段不创建索引
②:where条件中没有的字段不建立索引
③:数据包含太多重复列的不建立索引。比如sex字段,(一般是50%的分布)则不需要建立索引,name字段,一般名字重复的比较少,可以建立索引
5、索引的结构
BTree索引:默认
Hash索引
full-text索引
R-Tree索引