首页 > 数据库 >MYSQL|索引

MYSQL|索引

时间:2024-11-20 17:10:01浏览次数:1  
标签:主键 索引 num student MYSQL 查询 效率

MYSQL|索引

索引是关系数据库中对某一列或多个列的值进行预排序的数据结构

通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。

对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。

-- 给student表user_id字段添加了一个索引
ALTER TABLE student ADD INDEX idx_user_id (user_id);

索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。

反过来,如果记录的列存在大量相同的值,那么越低效

索引的优缺点

可以对一张表创建多个索引。

索引的优点是提高了查询效率,缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢。

唯一索引

当表中不能存储同一个学号,这个时候,就可以给该列添加唯一索引。

-- 为学号student_num建立一个唯一索引
ALTER TABLE student ADD UNIQUE INDEX idx_student_num (student_num);
-- 如果只想建立唯一性,而不建立索引
ALTER TABLE student ADD CONSTRAINT idx_student_num UNIQUE (student_num);

我们在数据库中查询时,如果有相应的索引可用,数据库系统就会自动使用索引来提高查询效率,如果没有索引,查询也能正常执行,只是速度会变慢。

因此,索引可以在使用数据库的过程中逐步优化。

总结:

  1. 索引就是对字段的预排序,对于排序好的数据,可以直接进行定位,速度自然很快。

  2. 关系数据库会自动对主键创建索引。

  3. 索引列的值越散列,效率越高。

  4. 在增删改记录时,需要同时修改索引,所以索引越多,增删改速度越慢。

References:
https://liaoxuefeng.com/books/sql/introduction/index.html

标签:主键,索引,num,student,MYSQL,查询,效率
From: https://www.cnblogs.com/HomeOFMarmot/p/18558793

相关文章

  • 【MySQL】MySQL表的基本操作入门指南
    ......
  • MySql Is Null和is not null索引失效的问题
    简介mysql的sql查询语句中使用isnull、isnotnull、!=对索引并没有任何影响,并不会因为where条件中使用了isnull、isnotnull、!=这些判断条件导致索引失效而全表扫描。mysql官方文档也已经明确说明isnull并不会影响索引的使用。事实上,导致索引失效而全表扫描的通常是因为一......
  • Mysql timestamp 类型时区问题
    1.问题描述当使用timestamp类型存储时间字段时,经常发生时区错误,比如相差8小时这样的问题。2.为什么会发生首先要介绍一个timestamp的存储结构与工作模式。2.1.timestamp的存储结构当在DB表结构中使用timestamp字段时,DB内部是以一个时间戳保存数据的,不存储具体......
  • MySQL数据备份及备份脚本
    一、SQL备份脚本!/bin/bash备份脚本备份文件保存路径BACKUP_DIR="/path/to/your/dir"MySQL数据库用户名DB_USER="username"MySQL数据库密码DB_PASSWORD="password"需要备份的数据库名称DB_NAME="username"获取当前日期DATE=$(date+"%Y-%m-%d_%H-%M-%S")备......
  • MySql ORDER BY索引是否失效
    在 MySQL 中,ORDERBY 子句是否使用索引取决于多种因素,包括查询的具体情况、索引的类型和结构、查询中的其他条件等。使用索引的情况1.单列索引和ORDERBY:当ORDERBY子句中的列有单列索引时,MySQL可以利用该索引来加速排序。--假设column已经有索引idx_colu......
  • MySQL 视图使用详解
    MySQL视图使用详解1.视图的基本概念视图是存储在数据库中的查询结果,它是一个虚拟表,不实际存储数据,而是根据定义的查询逻辑动态生成结果集。视图可以包含一个或多个表的数据,甚至可以包含聚合函数。视图的主要作用包括:简化复杂查询:通过封装复杂的JOIN或聚合操作,使得查......
  • 使用docker启动mysql/postgresql服务
    首先安装和启动docker然后创建容器:MySQLfilename:begin_mysql_server_in_docker.shcontentdockerrun-d-p3306:3306--namemysql_latest-eMYSQL_ROOT_PASSWORD=123456mysql:latestPostgreSQLfilename:begin_postgres_server_in_docker.shcontent:#......
  • 11、表的访问方式(索引)_1
    表访问方式对于oracle数据库来说:1、数据库里面就是一张一张的表,表里是一行行的数据2、最核心的工作就是用户往数据库里存表3、修改表里的数据,删除数据4、访问表里的数据对于oracle数据库来说,最核心的就是对表的操作(访问表)表的两种访问方式以select为例,看select如何从表中......
  • mysql数据库约束
    数据库会自动对数据的合法性进行检查的一系列机制,目的是为了防止被插入/修改一些非法的数据提供了一下约束notnull指示某列不能存储null值unique保证某列的每行必须有唯一值default规定没有给列赋值时的默认值primarykeynotnull和unique的结合,确保某列有唯一标识forei......
  • QT5.15.2 连接MySQL 驱动问题解决方案,无论菜鸟️还是老鸟,解决了就是好鸟
    最近在学QT,现在QT只能在线安装了,用了几天,看到数据库时,需要用MySQL,结果出现了问题。QSqlDatabase:QMYSQLdrivernotloaded、QSqlDatabase:availabledrivers:QSQLITEQODBCQODBC3QPSQLQPSQL7、Sqlconnectfailed、"DrivernotloadedDrivernotloaded"网上找到很多......