当前位置: 首页 > news >正文

数据库表添加索引

给字段添加索引,适用于查询频繁,重复不多的字段。主键和唯一约束在MySQL中会自动生成索引。
需要根据具体的查询模式和数据特点来设计,过多的索引会影响写操作性能,而索引确实会导致查询缓慢。合理的索引设计师数据库性能优化的关键。

索引

索引是一种数据结构,简单的案例就是类似书籍的目录,帮助mysql快速定位到所需要的数据行,而不需要扫描到整个表。索引存储了表中一列或者多列的值,并指向对应的数据行位置。

索引的类型

按照数据结构:

  • B+树索引
  • 哈希索引
  • 全文索引
    按应用维度分:
  • 主键索引:每个表只有一个,自动创建
  • 唯一索引
  • 普通索引
  • 复合索引:包含多个列的索引,遵循最左匹配原则

工作原理

使用B+树结构存储索引,是一种平衡的多路搜索树,所有叶子结点在同一层,并包含实指向实际数据的指针。执行查询时,MySQL从根节点开始,逐层向下查找,直到找到目标数据。

添加索引

  • 新建表中添加索引
  • 已有表中添加索引
  • 以修改表的方式添加索引

例如新建表添加索引:

create table table_name (id int not null primary key,name varchr(20) null,password varch(20) null,index index_id(id)

使用sql创建索引:

-- 创建普通索引
create index idx_name on table_name(column_name);-- 创建唯一索引
create unique index idx_name on table_name(column_name);-- 创建复合索引
create index idx_composite on table_name(col1, col2, col3);

删除索引:

drop index index_name on table_name;

查看索引:

show index from table_name;

优缺点

优点:

  • 提高查询速度,特别是where, order by, group by操作
  • 加速表连接操作
  • 减少服务器需要扫描的数据量

缺点:

  • 占用额外的存储空间
  • 降低insert, update, deltete操作的速度
  • 维护成本增加

参考

mysql中添加索引的三种方法

http://www.dtcms.com/a/217112.html

相关文章:

  • 天大《电视原理》背诵考点整理+计算/框图/作业题 (个人整理)
  • gbase8s统计更新(UPDATE STATISTICS)介绍
  • 【详细记录】我的第一次裸片硬件尝试:stm32f103c8t6最小核心板一板成
  • Linux--CentOs 8配置及基础命令
  • 以鸿道工业操作系统为核心,打造工业智能机器人新生态
  • 《富有的习惯》
  • 前端Vue3列表滑动无限加载实现
  • Day128 | 灵神 | 二叉树 | 反转二叉树的奇数层
  • 深入理解Java中的BigDecimal:高精度计算的核心工具
  • 投影机三色光源和单色光源实拍对比:一场视觉体验的终极较量
  • 将Windows11下的Ubuntu应用移动到其他盘
  • 华为FreeArc能和其他华为产品共用充电线吗?
  • 使用MATLAB求解微分方程:从基础到实践
  • 数字藏品质押融资的法律风险与合规路径
  • Linux换源yum和安装nginx,mysql
  • 余弦退火:助力模型训练的优化算法
  • OpenHarmony平台驱动使用(五),HDMI
  • java 数据输出占5列,右对齐
  • Jenkins实践(10):pipeline构建历史展示包名和各阶段间传递参数
  • C 语言学习笔记(结构体1)
  • 【PP】SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程
  • 《P1379 八数码难题》
  • 编程日志5.28
  • w笔记--表格组件(Table)的sorter属性
  • 基于 STM32 的智慧农业温室控制系统设计与实现
  • 如何通过仿真软件优化丝杆升降机设计
  • `sysctl`命令深度剖析:如何优化内核参数以提升服务器网络/IO性能?
  • app获取相册权限是否意味着所有相片都可随时读取?
  • 力扣HOT100之回溯:131. 分割回文串
  • MySQL 只知道表名不知道具体库?如何查询?information_schema入手