索引

  索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻数据文件,而不必查看所有数据。

1索引简介

   数据库中的索引是某个表中一列或者若干列值的集合,是一个独立的、物理的数据库结构,一般是与图或视图中的列相关联,数据库用户可以利用索引快速地访问数据表中的数据信息。通常情况下,只有在需要经常查询索引列中的数据时,才在表上创建索引,因为索引的使用会占用磁盘的空间,并且降低添加、删除和更新数据行的速度。
  索引是在存储引擎中实现的,所有存储引擎支持每个表至少16个索引,MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关,MyISAM和InnoDB存储引擎只支持BTREE索引;MEMORY存储引擎可以支持HASH和BTREE索引。 

  • 在数据库中,索引主要有以下的一些作用:

    • 通过创建索引,可以保证数据记录的唯一性;
    • 可以大大加快数据检索速度;
    • 在使用分组或排序子句进行检索数据时,可以显著减少查询中分组和排序的时间。
  • 索引的分类:

    • 普通索引和唯一索引

      • 普通索引:基本索引类型,允许在定义索引的列中插入重复值和空值
      • 唯一索引:索引列的值必须唯一,但允许有空值,主键索引是一种特殊的唯一索引,不允许有空值
    • 单列索引和组合索引

      • 单列索引:一个索引值包含单个列,一个表中可以有多个单列索引
      • 组合索引:在表的多个字段上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。
    • 全文索引:全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入空值和重复值,全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建,MySQL中只有MyISAM存储引擎支持全文索引。

  • 索引的设计原则:

    • 索引并非越多越好,索引会影响INSERT、DELETE和UPDATE语句的性能
    • 避免对经常更新的表进行过多的索引,索引列应该尽可能减少,对于经常查询的字段应该创建索引,但是避免添加不必要的字段
    • 数据量小的表最好不要使用索引,此时建立索引并不会优化性能

    • 在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引

    • 灵活使用唯一索引
    • 在频繁进行排序或分组的列上建立索引,可以提升性能

2创建索引

  MySQL支持多种方法在单个或多列上创建索引:在创建表的定义语句CREATE TABLE中指定索引,使用ALTER TABLE语句在存在的表上创建索引,或者使用CREATE INDEX语句在已存在的表上添加索引。
   

  • 创建表的时候创建索引:create table table_name [col_name data_type] [unique|fulltext|spatial[index|key] [index_name] (column_name,...) [asc|desc];

  • 在已经存在的表上创建索引

    • 使用ALTER TABLE语句创建索引:alter table table_name add [unique|fulltext|spatial] [index|key] [index_name] (column_name,...) [asc|desc];

    • 使用CREATE INDEX语句创建索引:create [unique|fulltext|spatial] [index|key] [index_name] on table_name (column_name,...) [asc|desc];

3删除索引

MySQL中删除索引使用ALTER TABLE或者DROP INDEX语句。

  • 使用ALTER TABLE删除索引:alter table table_name drop index index_name;

  • 使用DROP INDEX删除索引:drop index index_name on table_name;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值