经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
Mysql添加索引
来源:cnblogs  作者:徐知语的笔记  时间:2021/5/6 17:51:38  对本文有异议

一、如何添加索引

索引的类型:

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

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

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

原文链接:http://www.cnblogs.com/jalja365/p/14679703.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号