| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL插入中文1366报错以及索引失效的小问题 -> 正文阅读 |
|
[大数据]MySQL插入中文1366报错以及索引失效的小问题 |
今天在日常维护中遇到几个个小问题,比较有意思 1.? 在数据迁移后,重新数据失败,发现报错 ERROR 1136 (21S01): 。。。。。 2.? 在接口调用时,发现查询效率极其低下,估计是索引失效 这里新建一个表复现一下 目录 1. 插入中文报错1366新建一个test数据库以及一个emp表
依次展开故事 此时insert插入数据
会发现报一个错 1366,这个错误就是在mysql表中有一个或者多个字段的编码不是utf-8 解决: 通过show create table emp 查看,发现数据表中的内容为latin1字符集 于是,给这张表重新设置字符集
? 然后,重新去插入数据 依然报错,查看建表语句,发现字符集确实是utf8 是因为表设置了,但是行依然是latin1字符集 给行也设置
?此时再去插入就OK了 2. 索引失效的小问题在发现问题后,通过慢日志,profile等,发现了是索引失效的问题 首先给张张表建立一下索引 1. 默认的唯一主键索引 2. age的常规索引 3. name和gender的联合索引 ?再添加一个字段tap,不设置索引 1. 首先,就是 “ 最左前缀法则?”?? ? ? ?这里不多演示,就是一句话,联合查询带头大哥不能不在,后边的兄弟不能乱 2. 头部模糊搜索导致索引失效 这里先演示一下 ?发现第一次查询时, 索引是OK的,但是当头部模糊搜索后,type成了ALL,索引失效了 所有,在日常维护和开发中,要避免对头部的模糊搜索,后续会讲原理 3. or链接导致的索引失效 演示 ?对于or链接来说,当or 两侧都有索引时,or后的索引就会失效 4. 对于索引列进行运算导致索引失效 此处对有索引的age进行简单运算-,但是索引就会失效? 总结:MySQL默认的InnoDB引擎使用的是B+tree的数据结构,一个节点只存一个键值对 从本质上来说,联合索引也是一个B+树,和单值索引不同的是,联合索引的键值对不是1,而是大于1个。 ike索引失效原理
为什么%放在右边有时候能用到索引
没错,这里依然是最佳左前缀法则这个概念
一句话,InnoDB是B+tree数据结构,检索时,条件不满足当然就会索引失效了 当然,导致索引失效的原因远远不止这些,此上只是我早上遇到的问题 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 5:44:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |