MySQL索引的小总结,单列索引,组合索引,唯一索引,全文索引,主键索引

单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
组合索引:即一个索引包含多个列。

如果我们的查询where条件只有一个,我们完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。如果我们的业务场景是需要经常查询多个组合列,
不要试图分别基于单个列建立多个单列索引(因为虽然有多个单列索引,但是MySQL只能用到其中的那个它认为似乎最有效率的单列索引)。
这是因为当SQL语句所查询的列,全部都出现在复合索引中时,此时由于只需要查询索引块即可获得所有数据,当然比使用多个单列索引要快得多

1.如果你有三个单列的索引,MySQL会试图选择一个限制最严格的索引,
但是,即使是限制最严格的单列索引,它的限制能力也肯定远远低于firstname、lastname、age这三个列上的多列索引。

2.组合索引遵从最左原则
explain 分析sql的性能问题
主要的列:
table :表名
type  :mysql链接操作的类型
        system  只有一行,const链接的特属类型
        const   表中记录的最大值,只有一行,所以类型为常量
        ref     不是唯一索引和主键索引的类型
        rang    返回范围的行
        index   这个链接类型对前面的表中的每个记录进行联合完全扫描(比ALL更好,因为索引一般小于表数据量)
        All     全表扫描


数据库建立索引常用的规则如下: (理论上重复率高的字段数值不适合建立索引)
1、表的主键、外键必须有索引; 
2、数据量超过300的表应该有索引; 
3、经常与其他表进行连接的表,在连接字段上应该建立索引; 
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 
5、索引应该建在选择性高的字段上; 
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
8. 拼音字母做值不适合作为索引

3. 为什么性别不适合建索引呢?因为你访问索引需要付出额外的IO开销,你从索引中拿到的只是地址,要想真正访问到数据还是要对表进行一次IO。
假如你要从表的100万行数据中取几个数据,那么利用索引迅速定位,访问索引的这IO开销就非常值了。但如果你是从100万行数据中取50万行数据,
就比如性别字段,那你相对需要访问50万次索引,再访问50万次表,加起来的开销并不会比直接对表进行一次完整扫描小。(理论上重复率高的字段数值不适合建立索引)

4. 聚组索引和非聚组索引,总的而言,用的多的是非聚组索引,聚组索引的资源比较宝贵

5.索引的不足之处:

虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

单列索引:(建立了多个单列索引,查询时严格按照执行效率最高的进行原则)
eg: ALTER TABLE t_user ADD INDEX_name(username),Index_password(password);

组合索引: (遵从最左原则,又称为多列索引)
eg: ALTER TABLE myIndex ADD INDEX name_city_age (vc_Name(10),vc_City,i_Age);
    ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

添加唯一索引:
eg: ALTER TABLE `table_name` ADD UNIQUE (SID);  //如身份证号具有唯一性,常可作为唯一索引使用

添加全文索引:
eg: ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

参考链接:https://www.cnblogs.com/mr-wuxiansheng/p/7679205.html

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值