mysql添加索引sql语句_如何添加索引

mysql添加索引sql语句_如何添加索引数据量过大时,直接执行加索引操作就会锁表,过大的表可能会达到数小时甚至导致服务崩溃.显然直接ALER表是不可取的

Mysql添加索引

一、如何添加索引

索引的类型:

  • UNIQUE(唯一索引):不可以出现相同的值,可以有NULL值
  • INDEX(普通索引):允许出现相同的索引内容
  • PROMARY KEY(主键索引):不允许出现相同的值
  • fulltext index(全文索引):可以针对值中的某个单词,但效率确实不敢恭维
  • 组合索引:实质上是将多个字段建到一个索引里,列值的组合必须唯一

1、普通索引
alter table table_name add index index_name (column_list) ;
2、唯一索引
alter table table_name add unique (column_list) ;
3、主键索引
alter table table_name add primary key (column_list) ;

4、组合索引

ALTER TABLE table_name ADD INDEX indx_name_city_age (name,city,age); 

二、线上环境添加索引

线上环境的数据量很大的情况向直接使用alter,由于锁表的原因会影响业务系统的可用性,所以不能直接alter,一般采用以下方案

方案一:停止服务

  • 复制原表的结构,创建一张新表
  • 为新表添加索引
  • 将原表的数据导出,再导入到新表中
  • 将新表的表名修改为老表名

方案二:pt-online-schema-change,该方案与方案一相同,但是该工具可以不用停止服务

原理:

  • 首先它会新建一张一模一样的表,表名一般是_new后缀
  • 然后在这个新表执行更改字段操作
  • 然后在原表上加三个触发器,DELETE/UPDATE/INSERT,将原表中要执行的语句也在新表中执行
  • 最后将原表的数据拷贝到新表中,然后替换掉原表

方案三:使用主从复制,在从表中添加索引。

注意:无论哪种方案,建议在夜深人静的时候干。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6244.html

(0)
上一篇 2023-04-14
下一篇 2023-04-14

相关推荐

  • Oracle入门学习二[亲测有效]

    Oracle入门学习二[亲测有效]上一篇:Oracle入门学习一 学习视频:https://www.bilibili.com/video/BV1tJ411r7EC?p=15 算术运算符:+ – * / 逻辑运算符:and or not

    2023-02-23
    147
  • posterior descending artery_poster session

    posterior descending artery_poster session本文作者:Craig Kerstiens ,目前在负责 @citusdata 的云团队。Citus 将 Postgres 扩展为可水平扩展的分布式数据库。本文是他之前一个好友采访他的记录(英文原文请…

    2022-12-20
    931
  • oracle逻辑存储结构「建议收藏」

    oracle逻辑存储结构「建议收藏」oracle数据库管理系统有三个重要的概念:实例、数据库、数据库服务器。oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构。逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理

    2022-12-26
    153
  • Navicat Premium 15 安装说明

    Navicat Premium 15 安装说明Navicat Premium 是MySQL,SQL Server,Oracle和PostgreSQL的一体化数据库管理工具,功能非常强大。 Navicat Premium v15安装步骤省略,默认下

    2023-04-19
    146
  • 设计模式-观察者模式(Observer)「建议收藏」

    设计模式-观察者模式(Observer)「建议收藏」讲故事(user story) 假设我们是一个优惠券提供平台,故事就发生在顾客在我们平台采购完成支付成功后。 支付完成后平台要进行的一些操作: 1. 短信通知客户已经生成订单 2. 增加顾客的积分 3

    2023-02-20
    151
  • MySql性能监测方法

    MySql性能监测方法mysql分为三层,第一层客户端,第二层服务端,第三层存储引擎 服务端主要流程连接器、分析器、优化器、执行器 使用mysql客户端控制行,mysql8.0中找到MySQL 8.0 Command L…

    2023-03-05
    154
  • 阿里云王创_基于阿里云物联网

    阿里云王创_基于阿里云物联网分享嘉宾:王怀远 阿里云 表格存储架构师 编辑整理:李瑶 DataFun 出品平台:DataFunTalk 导读: 大家好,我是王怀远,我2015年加入阿里云,一直从事表格存储的研发和架构相关工作,目

    2023-05-18
    150
  • Mysql快速找回root密码妙招「建议收藏」

    Mysql快速找回root密码妙招「建议收藏」目前B站正在直播Mysql、Oracle实战,详情关注公众号:IT邦德 QQ群:955286955、168797397 一、Mysql root用户密码忘记 (8.0以下) 1.用命令编辑/etc/…

    2023-04-13
    159

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注