MySQL索引输出问题

输出结果是这样的是啥情况,看着特别乱

img

该怎么做才能输出成这种格式

img

使用 \G 切换为竖排

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7596328
  • 你也可以参考下这篇文章:mysql对多个字符串集合取交集以及判断一个字符串集在包含另一个字符串集的自定义方法
  • 你还可以看下mysql参考手册中的 MySQL 字符集、对齐方式、统一编码 配置应用程序的字符集和排序
  • 除此之外, 这篇博客: mysql默认隔离级别为什么是可重复读,业务代码为什么设置为读已提交中的 选择读已提交的原因 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.repeatable存在间隙锁会使死锁的概率增大;
    2.在RR可重复读隔离级别下,条件列未命中索引会锁表!而在RC隔离级别下,只锁行;
    在RR隔离级别下,走聚簇索引,进行全部扫描,最后会将整个表锁上;
    在RC隔离级别下,其先走聚簇索引,进行全部扫描,但MySQL做了优化,在MySQL Server过滤条件,发现不满足后,会调用unlock_row方法,把不满足条件的记录放锁。
    3.在RC隔离级别下,引入半一致性读(semi-consistent)特性增加了update操作的性能!

    半一致性读就是,一个update语句,如果读到一行已经加锁的记录,此时InnoDB返回记录最近提交的版本,由MySQL上层判断此版本是否满足update的where条件。若满足(需要更新),则MySQL会重新发起一次读操作,此时会读取行的最新版本(并加锁)!

  • 您还可以看一下 陈槐老师的mysql数据库基础技能全程实战课程中的 查询相关练习题小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    对于如何优化MySQL索引的输出格式,可以采取以下几种措施:

    1. 使用命令行工具mysql的-P选项来设置输出格式。

    首先使用命令行工具mysql连接到MySQL服务器,然后在命令行中输入以下命令:

    mysql> SELECT * FROM tablename\G
    

    其中tablename是要查询的表的名称。上述查询会以水平格式输出查询结果。要以垂直格式输出查询结果,可以在命令行中输入以下命令:

    mysql> SELECT * FROM tablename\G 
        -> \P
    

    此时,查询结果会以垂直格式输出。其中 \P 是 MySQL 命令行工具的内置命令,可以改变查询结果的输出格式。

    1. 使用SQL语句的CONCAT函数来拼接输出结果。

    如果希望以更自定义的格式输出查询结果,可以使用SQL语句的CONCAT函数来拼接输出结果,如下所示:

    SELECT CONCAT(id, ' - ', name, ' - ', age) AS info FROM tablename;
    

    上述查询会将查询结果中id、name和age三列的值以"-"为分隔符进行拼接,并将拼接后的结果输出到名为info的列中。

    1. 使用SQL语句的FORMAT函数来格式化输出结果。

    如果希望以特定的格式输出查询结果,可以使用SQL语句的FORMAT函数来格式化输出结果,如下所示:

    SELECT FORMAT(price, 2) AS formatted_price FROM tablename;
    

    上述查询会将查询结果中price列的值格式化为两位小数,并将格式化后的结果输出到名为formatted_price的列中。

    总之,针对不同的需求,可以采取不同的措施来优化MySQL索引的输出格式。