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:/