MySQL入门学习-索引.创建索引

       索引是 MySQL 中用于加速查询的一种数据结构。它通过在表的列上创建索引来加快数据的检索速度。

一、索引的概念

       索引类似于书的目录,可以快速定位到表中的数据。当在表中的列上创建索引后,MySQL 会根据索引列的值对数据进行排序,并建立一个索引树,使得查询可以更快地找到匹配的记录。

二、索引的类型

1. 唯一索引(Unique Index):

确保索引列中的值是唯一的。

2. 主键索引(Primary Key Index):

唯一标识表中的每一行记录,并且不允许为空值。

3. 普通索引(Normal Index):

允许索引列中的值有重复。

4. 全文索引(Fulltext Index):

用于对文本类型的列进行全文搜索。

三、索引的特点

1. 加快数据检索速度。

2. 唯一索引可以保证数据的唯一性。

3. 索引会增加插入、更新和删除操作的时间成本,因为这些操作需要同时维护索引。

4. 索引会占用一定的存储空间。

四、索引的使用方法

1. 创建索引

       可以使用 `CREATE INDEX` 语句来创建索引,例如:

CREATE INDEX index_name ON table_name (column1, column2,...);

       其中,'index_name' 是索引的名称,'table_name' 是要创建索引的表的名称,'column1, column2,...' 是要包含在索引中的列的名称。

2. 使用索引

       在查询中,MySQL 会自动使用索引来优化查询性能。例如,如果在 'customer' 表的 'customer_name' 列上创建了索引,那么在查询 'SELECT * FROM customer WHERE customer_name = 'John Doe'' 时,MySQL 会使用索引来快速找到符合条件的记录。

五、索引与其他的比较

1. 索引与全表扫描

       在没有索引的情况下,MySQL 会进行全表扫描来查找匹配的记录。全表扫描会消耗大量的时间和系统资源,尤其是当表中的数据量很大时。而索引可以大大减少数据检索的时间和系统资源消耗。

2. 索引与唯一性约束

       唯一性约束用于确保表中的列的值是唯一的。唯一性约束可以通过在列上创建唯一索引来实现。与主键索引不同的是,唯一性约束可以包含空值,而主键索引不允许空值。

六、索引的高级应用

1. 组合索引

       可以在多个列上创建组合索引,以提高查询性能。例如,如果经常根据 'customer_name' 和 'customer_city' 来查询客户信息,可以在这两个列上创建组合索引。

2. 覆盖索引

       如果查询只需要从索引中获取数据,而不需要访问表中的数据,那么这种索引称为覆盖索引。覆盖索引可以大大提高查询性能,因为它不需要读取表中的数据。

3. 索引优化

       索引优化是指通过调整索引的创建、使用等策略来提高查询性能。例如,可以通过分析查询语句的执行计划来确定是否需要创建索引、创建哪些索引等。

七、以下是一些创建索引的示例代码及说明:

1. 创建唯一索引

CREATE UNIQUE INDEX index_name ON table_name (column1);

该语句在 'table_name' 表的 'column1' 列上创建了一个唯一索引。

2. 创建普通索引

CREATE INDEX index_name ON table_name (column1, column2);

该语句在 'table_name' 表的 'column1' 和 'column2' 列上创建了一个普通索引。

3. 创建全文索引

CREATE FULLTEXT INDEX index_name ON table_name (column1);

该语句在 'table_name' 表的 'column1' 列上创建了一个全文索引。

4. 删除索引

DROP INDEX index_name ON table_name;

该语句删除了 'table_name' 表上的名为 'index_name' 的索引。

       需要注意的是,索引的使用需要根据具体的业务需求和数据特点来进行选择和优化。过度创建索引可能会导致系统性能下降,因此在使用索引时需要谨慎考虑。同时,在创建索引时,也需要注意索引的命名规范和数据类型等问题,以确保索引的有效性和

(文章为作者在学习MySQL过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++STL基础入门】wstring类基础使用

文章目录 前言C STL基础入门:wstring类的基础使用前言正文wstring是什么常用的构造函数常用的操作函数 总结 前言 在C的标准模板库(STL)中,wstring是一个重要的类,它是string的宽字符版本,用于存储和操作宽字符序列。本文将详细介…

十三、Maven(1)

🌻🌻目录 一、maven价绍二、maven的功能1、项目自动化构建2、管理jar、war包3、实现项目结构设计 三、maven安装1、maven的安装环境需要jdk2、Maven的安装路径中不能出现中文和空格3、压缩包解压即可4、配置环境变量 四、maven的仓库1. Maven仓库配置2. …

选型手册:Bosch Sensortec 博世 微机电系统(MEMS)传感器和方案

前言 博世传感器公司(Bosch Sensortec) 是全球领先的微机电系统(MEMS)传感器和解决方案供应商。公司成立于2005年,是德国罗伯特博世有限公司(Robert Bosch GmbH)旗下的全资子公司。博世传感器公…

SpringBoot【3】集成 Swagger

SpringBoot 集成 Swagger 前言pom.xml 配置文件application.yml 配置文件config 包Swagger2Config entity 包UserEntity service 包impl 包SwaggerServiceImpl SwaggerService controller 包SwaggerController SwaggerApplication验证 前言 创建项目步骤、及版本选择等&#x…

展开说说:Android列表之RecyclerView

RecyclerView 它是从Android5.0出现的全新列表组件,更加强大和灵活。用于显示列表形式 (list) 或者网格形式 (grid) 的数据,替代ListView和GridView成为Android主流的列表组件。可以说Android客户端只要有表格的地方就有RecyclerView。 RecyclerView 内…

【Android】Material TabLayout使用详解

基本用法 TabItem可以设置text&#xff0c;icon&#xff0c;layout三个属性 其它属性都通过TabLayout来统一设置 <com.google.android.material.tabs.TabLayout><com.google.android.material.tabs.TabItem/><com.google.android.material.tabs.TabItem/>…

VCS编译bug汇总

‘typedef’ is not expected to be used in this contex 注册前少了分号。 Scope resolution error resolution : 声明指针时 不能与类名同名&#xff0c;即 不能声明为adapter. cannot find member "type_id" 忘记注册了 拼接运算符使用 关键要加上1b&#xff0…

[MySQL]购物管理系统—简略版

本文内容需以MySQL支持 特别感谢baidu comate AI提供的少量虚拟数据 0.建库(建立数据库——utf8字符集&#xff0c;utf8_general_ci排序规则) 1.此项目ER图如下 2.DDLDML(共九表&#xff0c;27数据) SET FOREIGN_KEY_CHECKS 0;DROP TABLE IF EXISTS goods; CREATE TABLE g…

前端vue-cli相关知识与搭建过程(项目创建,组件路由)very 详细

一.关于vue-cli 1.什么是vue Vue (读音 /vju ː /&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一&#xff0c;和 Angular.js…

【公开数据集获取】

Open Images Dataset https://www.youtube.com/watch?vdLSFX6Jq-F0

一分钟彻底掌握java泛型

Java中的泛型&#xff08;Generics&#xff09; 在Java中&#xff0c;泛型是JDK 5引入的一个非常重要的特性&#xff0c;它允许你在定义类、接口和方法时使用类型参数&#xff08;type parameters&#xff09;。使用泛型的主要好处是可以提供编译时的类型检查&#xff0c;减少…

【M365运维】Outlook和Teams里不显示用户的组织架构

【问题】 由于一些误操作&#xff0c;把用户账户禁用并重新启用后&#xff0c;发现在Outlook和Teams里无法查看用户的组织结构图了。如下图所示&#xff1a; - 在Outlook 里&#xff0c;用户标签页的组织一直显示“正在加载..."&#xff0c;成员身份也是“找不到任何组。…

【GD32】08 - IIC(以SHT20为例)

GD32中的IIC 今天来了解一下GD32中的硬件IIC&#xff0c;其实我个人是觉得软件IIC比较方便的&#xff0c;不过之前文章里用的都是软件IIC&#xff0c;今天就算是走出自己的舒适圈&#xff0c;我们来了解了解GD32中的硬件IIC。 我这里用的型号是GD32F407&#xff0c;不同型号的…

等保测评初级简答题试题

基本要求&#xff0c;在应用安全层面的访问控制要求中&#xff0c;三级系统较二级系统增加的措施有哪些&#xff1f; 答&#xff1a;三级比二级增加的要求项有&#xff1a; 应提供对重要信息资源设置敏感标记的功能&#xff1b; 应按照安全策略严格控制用户对有敏感标记重要…

策略模式和状态模式

策略模式 在上下文中携带策略接口作为成员变量&#xff0c;在使用上下文之前需要设置策略setStrategy&#xff08;&#xff09;&#xff0c;然后使用策略接口成员变量来进行策略的执行。 步骤1&#xff1a;定义策略接口 // 策略接口 public interface Strategy {int execut…

猎豹WiFi

猎豹WiFi&#xff0c;记得刚安装完就一堆广告弹窗&#xff0c;然后删除了一些东西&#xff0c;不影响开热点的功能。 kwifi.zip - 蓝奏云

干涉阵型成图参数记录【robust】

robust 这个玩意经常忘记&#xff0c;就是取2的时候是更加显示大尺度的结构&#xff0c;取-2更加显示小尺度结果&#xff0c;一般取0就是正常就好了

真正要战胜的,不是困难,是自己

记录一些好的文字&#xff0c;希望可以和大家共勉。 一个人真正的成长&#xff0c;是战胜自己 不知你是否有这样的经历&#xff1a;曾经觉得一道题很难&#xff0c;但解出来后&#xff0c;发现其实并没那么难&#xff1b;曾经觉得一件事是不可能完成的&#xff0c;但历经千辛万…

vitest-前端单元测试

Vitest是一个轻量级、快速且功能强大的测试框架&#xff0c;特别适用于Vite项目&#xff0c;但也可以与其他前端项目&#xff08;如使用webpack构建的项目&#xff09;集成使用。Vitest提供极速的测试体验&#xff0c;并包含一系列用于编写和组织测试用例的API&#xff0c;如de…

vue项目中,pnpm不能用-解决

方法四&#xff1a;解决 PowerShell 执行策略问题 如果你决定继续使用 PowerShell&#xff0c;并且遇到执行策略问题&#xff0c;可以尝试以下方法解决&#xff1a; 永久更改执行策略&#xff1a; 在管理员权限的 PowerShell 中运行以下命令&#xff0c;以永久更改执行策略&am…