首页 > 数据库 >31.mysql查看所有索引

31.mysql查看所有索引

时间:2023-04-06 10:33:06浏览次数:45  
标签:INDEX NAME 31 USING 索引 mysql TABLE CONCAT

当对大表进行数据迁移时,往往索引是个大问题,不但用时较长,且容易造成锁表,

此时针对某些情况,就可以先备份索引信息,然后删除原表索引,数据迁移完成之后,再重建索引

SELECT
  CONCAT('ALTER TABLE `',
    TABLE_NAME,
    '` ',
    'ADD ',
    IF(NON_UNIQUE = 1,
      CASE UPPER(INDEX_TYPE)
        WHEN 'FULLTEXT' THEN 'FULLTEXT INDEX'
        WHEN 'SPATIAL' THEN 'SPATIAL INDEX'
        ELSE CONCAT('INDEX `',
          INDEX_NAME,
          '` USING ',
          INDEX_TYPE)
      END,
      IF(UPPER(INDEX_NAME) = 'PRIMARY',
        CONCAT('PRIMARY KEY USING ', INDEX_TYPE),
        CONCAT('UNIQUE INDEX `',
          INDEX_NAME,
          '` USING ',
          INDEX_TYPE))),
      '(',
      GROUP_CONCAT(DISTINCT CONCAT('`', COLUMN_NAME, '`')
        ORDER BY SEQ_IN_INDEX ASC
        SEPARATOR ', '),
      ');') AS 'Show_Add_Indexes'
FROM
  information_schema.STATISTICS
WHERE
  TABLE_SCHEMA = 'epc_audi'
GROUP BY INDEX_TYPE , NON_UNIQUE , TABLE_NAME , INDEX_NAME
ORDER BY TABLE_NAME ASC , INDEX_NAME ASC;

其中USING BTREE/USING HASH 分别是使用不同的算法进行索引

网上对索引优化有个流行的口诀:

全职匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
索引列上少计算,范围之后全失效;
like百分写最右,覆盖索引不写星;
不等空值还有or,索引失效要少用;
var引号不可丢,SQL高级也不难!

标签:INDEX,NAME,31,USING,索引,mysql,TABLE,CONCAT
From: https://www.cnblogs.com/zhangdapangzo/p/17291870.html

相关文章

  • 关于mysql的and和or
    写了一个查询语句结果踩坑了,这个and和or分不清楚谁的优先级高在页面上看到了已经被删除的数据,我就知道糟了。话不读说直接看代码<selectid="listByUsPage"resultType="com.wuling.product.domain.TaskInfo">select*from(select*fromproject_......
  • mysql运维-------日志
    1.错误日志错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认放在目录/var/log/,默认的日志文件名为mysqld.log。查看日......
  • Mysql学习笔记(连载中)
    Mysql01使用CMD连接数据库--在控制台连接数据库(需将位置切换到mysql所在地址)mysql-uroot-ppassword:12345--修改mysql账户密码及权限,安装配置完后慎用updatemysql.usersetauthentication_string=password('12345')whereuser='root'andHost='localhost';......
  • 力扣620(MySQL)-有趣的电影(简单)
    题目:某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个LED显示板做电影推荐,上面公布着影评和相关电影描述。作为该电影院的信息部主管,您需要编写一个SQL查询,找出所有影片描述为非 boring (不无聊) 的并且id为奇数 的影片,结果请按等级......
  • Linux 中知心mysql的sql文件
    1.连接mysql[root@hadoop4~]#mysql-uroot-p  2.创建库mysql>CREATEDATABASEspring; 3.查看并切换数据库mysql>showdatabases;mysql>usespring 3.执行sql文件(source/usr/user.sql) ......
  • Mysql数据库基础(2)
    一、关系  将实体与实体的关系,反应到最终数据库表的设计上来:  将关系分成三种:一对一一对多(多对一)多对多  所有的关系都是指的表与表之间的关系。1、一对一  一对一:一张表的一条记录一定只能与另外一张表的一条记录进行对应;反之亦然。  学生表:姓名,性别,年龄,身......
  • 群晖的docker设置MySQL从库功能
    群晖的docker设置MySQL从库功能主库与正常设置无区别,新建账号并授权拷贝binlog即可,注意密码强度,最好不要给任意IP访问权限;数据安全无小事以镜像为8.0.30为例在高级设置中添加环境变量即可MYSQL_ROOT_PASSWORD=e0a1021570daa600MYSQL_ALLOW_EMPTY_PASSWORD=no注意为方便修......
  • 力扣619(MySQL)-只出现一次的最大数字(简单)
    题目:MyNumbers 表:单一数字是在MyNumbers表中只出现一次的数字。请你编写一个SQL查询来报告最大的单一数字。如果不存在单一数字,查询需报告null。查询结果如下例所示。示例1: 示例2: 来源:力扣(LeetCode)链接:https://leetcode.cn/problems/biggest-single-num......
  • 力扣618(MySQL)-学生地理信息报告(困难)
    题目: 一所美国大学有来自亚洲、欧洲和美洲的学生,他们的地理信息存放在如下student表中该表没有主键。它可能包含重复的行。该表的每一行表示学生的名字和他们来自的大陆。一所学校有来自亚洲、欧洲和美洲的学生。示例:student: 写一个查询语句实现对大洲(continent)列的......
  • MYSQL基础知识之函数
     1、函数概念函数是指一段可以直接被另一段程序调用的程序或代码2、字符串函数MySQL常用的字符串函数有:# CONCAT(S1,S2,...Sn):字符串拼接,将S1,S2,...Sn拼接成一个字符串SELECTCONCAT('hello','world'); #LOWER(str):将字符串str全部转为小写SELECTLOWER('ABCD');......