mysql数据库索引

Posted 刚刚睡醒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库索引相关的知识,希望对你有一定的参考价值。

1、索引的创建

create index user_index on user(uname);

 

2、查看表中的索引

show index from table_name;

 

3、删除索引

drop index user_index on table_name;

 

4、使用索引的优点

1、可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性;
2、建立索引可以大大提高检索的数据,以及减少表的检索行数;
3、在表连接的连接条件 可以加速表与表直接的相连;
4、在分组和排序字句进行数据检索,可以减少查询时间中分组和 排序时所消耗的时间(数据库的记录会重新排序);
5、建立索引,在查询中使用索引 可以提高性能。

 

5、使用索引的缺点

1、在创建索引和维护索引 会耗费时间,随着数据量的增加而增加;
2、索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间;
3、当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快)。

 

6、注意索引的使用

  要建立索引,要按照实际数据情况来看,哪些需要建立索引,哪些是多余的;

1、在经常需要搜索的列上,可以加快索引的速度;
2、主键列上可以确保列的唯一性;
3、在表与表的而连接条件上加上索引,可以加快连接查询的速度;
4、在经常需要排序(order by),分组(group by)和的distinct 列上加索引, 可以加快排序查询的时间,  (单独order by 用不了索引,索引考虑加where 或加limit);
5、索引不会包含NULL列,如果列中包含NULL值都将不会被包含在索引中,复合索引中如果有一列含有NULL值那么这个组合索引都将失效,一般需要给默认值0或者 ‘ ‘字符串;
6、使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引的时候指定前缀长度 比如前10个字符 (前提是多数值是唯一的..)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/0操作;
7、不要在列上进行运算,这样会使得mysql索引失效,也会进行全表扫描。

 

7、哪些情况下需要创建索引?哪些情况下不要创建索引?

1、主键自动建立唯一索引;
2、频繁作为查询条件的字段应该创建索引;
3、查询中与其他表有关联的字段,例如外键关系;
4、频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件;
5、where条件里用不到的字段,不创建索引;
6、高并发的情况下一般选择复合索引;
7、查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快速查找);
8、查询中统计或者分组的字段;
9、表记录太少,不需要创建索引;
10、经常增删改的表;
11、数据重复且分布平均的字段,因此为经常查询的和经常排序的字段建立索引。注意某些数据包含大量重复数据,因此他建立索引就没有太大的效果,例如性别字段,只有男女,不适合建立索引。

 


以上是关于mysql数据库索引的主要内容,如果未能解决你的问题,请参考以下文章

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

java.lang.IllegalStateException:键 f0 的片段不再存在:索引 1

javascript UV Index Monitor App订阅PubNub并显示UV索引值。博文的代码片段。在这里查看项目:https:// githu

c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/

MySQL命中索引代码实验案例

MySQL命中索引代码实验案例