表的索引

本文深入解析数据库索引的原理及各类索引的特点,包括主键索引、唯一键索引、普通索引、全文索引等,探讨了索引如何提升检索效率,以及创建和维护索引的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表的索引

 

1、索引

    目的:提高检索速度

    原理:在操作系统高层次使用 二分思想 和 Binary Tree 来维护这个索引

    特点:索引不用加内存,不用改程序,不用调sql,只要执行正确的create index,就可以提高查询速度。

              索引占用磁盘空间,是以增加大量的IO操作来提高检索速度,空间换时间

              添加一条记录不仅要在表中添加,还要维护二叉树

             一个索引不能解决全部的检索问题,需要分别给字段建立索引

 

2、主键索引-PRI,

    特点:不能为空;不能重复;一张表最多只能有一个主键;一般主键所在列通常是整数类型

    建立:在字段名后添加索引、

              在表的定义最后,指定列为索引

              创建表以后,使用 alter 在表中添加索引

    特殊的主键:复合主键

 

3、唯一键索引-UNI,

    特点:不能重复;可以为空;一张表可以建立多个唯一键;

    建立:在字段名后添加索引、

              在表的定义最后,指定列为索引

              创建表以后,使用 alter 在表中添加索引

 

4、普通索引-MUL

    建立:(一般不指定索引名,则索引名与列名一致)

  • --在表的定义最后,指定某列为索引

  • alter table student add index(name);--创建完表以后指定某列为普通索引

  • create index idx_name on student(name);--创建一个索引名为 idx_name 的索引

    特点:一个表可以由多个普通索引

              普通索引可以由重复数据

 

5、全文索引-FULLTEXT,只支持英文

            当对文章字段或有大量文字的字段进行检索时,会使用到全文索引

    支持全文索引的引擎:MyISAM

    建立:在字段名后添加索引、

              在表的定义最后,指定列为索引

              创建表以后,使用 alter 在表中添加索引

    特点:

    全文索引的使用:select * from table where match(COL1, COL2...) against ('string');

 

6、索引相关

  • 查看索引名:

    • show keys from table;

    • show index from 表名;

    • desc 表名;

  • explain工具看一下,是否使用到索引

        explain + 查询语句;

  • 删除索引

        删除主键索引:alter table 表名 drop primary key;

         其他索引的删除: alter table 表名 drop index 索引名; 

          drop index 索引名 on 表名

  • 索引创建原则:

    1. 比较频繁作为查询条件的字段应该创建索引

    2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

    3. 更新非常频繁的字段不适合作创建索引

    4. 不会出现在where子句中的字段不该创建索引

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值