zoukankan      html  css  js  c++  java
  • 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,将原表中要执行的语句也在新表中执行
    • 最后将原表的数据拷贝到新表中,然后替换掉原表

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

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

    古之学者为己,今之学者为人
  • 相关阅读:
    链表10-开发可用链表(使用链表)
    LRU简单实现
    图片服务器搭建过程
    scp
    dubbo-admin无法访问
    linux tomcat启动后无法访问
    linux进程端口防火墙
    centos7 jdk
    com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: dubbo://192.16。。
    linux与Unix切换到root用户
  • 原文地址:https://www.cnblogs.com/jalja365/p/14679703.html
Copyright © 2011-2022 走看看