SQL之索引的创建与删除

1、知识点索引创建、删除与使用介绍

  • 1.1 create方式创建索引:

CREATE
  [UNIQUE -- 唯一索引
  | FULLTEXT -- 全文索引
  ] INDEX index_name ON table_name -- 不指定唯一或全文时默认普通索引
  (column1[(length) [DESC|ASC]] [,column2,...]) -- 可以对多列建立组合索引 
  • 1.2 alter方式创建索引:

ALTER TABLE tb_name ADD [UNIQUE | FULLTEXT] [INDEX] index_content(content)
  • 2.1 drop方式删除索引:

DROP INDEX <索引名> ON <表名>
  • 2.2 alter方式删除索引:

ALTER TABLE <表名> DROP INDEX <索引名>
  • 3.1 索引的使用:

    • 索引使用时满足最左前缀匹配原则,即对于组合索引(col1, col2),在不考虑引擎优化时,条件必须是col1在前col2在后,或者只使用col1,索引才会生效;
    • 索引不包含有NULL值的列
    • 一个查询只使用一次索引,where中如果使用了索引,order by就不会使用
    • like做字段比较时只有前缀确定时才会使用索引
    • 在列上进行运算后不会使用索引,如year(start_time)<2020不会使用start_time上的索引

2、案例

(1)现有一张试卷信息表examination_info,其中包含各种类型试卷的信息。为了对表更方便快捷地查询,需要在examination_info表创建以下索引,规则如下:

在duration列创建普通索引idx_duration、在exam_id列创建唯一性索引uniq_idx_exam_id、在tag列创建全文索引full_idx_tag。

create index idx_duration on examination_info(duration);
create unique index uniq_idx_exam_id on examination_info(exam_id);
create fulltext index full_idx_tag on examination_info(tag);

根据题意,将返回如下结果:

examination_info0PRIMARY1idA0BTREE
examination_info0uniq_idx_exam_id1exam_idA0YESBTREE
examination_info1idx_duration1durationA0BTREE
examination_info1full_idx_tag1tag0YESFULLTEXT

备注:后台会通过 SHOW INDEX FROM examination_info 语句来对比输出结果

(2)请删除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。

drop index uniq_idx_exam_id on examination_info;
drop index full_idx_tag on examination_info;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 中,你可以使用 CREATE INDEX 语句来建立索引,并使用 语句来访问索引。 建立索引: 你可以使用 CREATE INDEX 语句在表上创建索引索引可以基于一个或多个列,以加快查询的速度。常见的索引类型包括 B-Tree 索引、哈希索引和全文索引。 以下是一个示例,展示如何在 "your_table" 表的 "column_name" 列上创建一个 B-Tree 索引: ```sql CREATE INDEX index_name ON your_table(column_name); ``` 在上面的示例中,"index_name" 是你为索引指定的名称,"your_table" 是要在其上创建索引的表名,"column_name" 是要在其上创建索引的列名。 访问索引: 一旦你在表上创建索引,你可以在查询中使用该索引来加快数据检索的速度。MySQL 查询优化器会自动选择合适的索引来执行查询。 以下是一个示例,展示如何使用 SELECT 语句来访问索引: ```sql SELECT column_name(s) FROM your_table WHERE condition ``` 在上面的示例中,"column_name(s)" 是要检索的列名,"your_table" 是要从中检索数据的表名,"condition" 是一个可选的筛选条件。 MySQL 查询优化器会根据查询条件和可用的索引来选择最佳的执行计划。它会考虑索引的选择性、列的基数、查询成本等因素来确定使用哪个索引。你可以使用 EXPLAIN 关键字来分析查询计划,了解 MySQL 是如何使用索引的。 请注意,使用过多的索引可能会影响插入、更新和删除操作的性能。因此,在创建索引时需要权衡索引的选择和表的更新操作频率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值