IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySql项目查询优化经验总结 -> 正文阅读

[大数据]MySql项目查询优化经验总结

最近在优化mysql项目部分页面查询较慢的问题时总结出的若干经验,分享如下:

1.查询时如果需要联合其它表查询尽量避免在from之前的sql查询字段中去直接查其它表,这样会导致有几条数据就需要查几次其它表,效率比较堪忧,比如下面这种写法:

还是应该使用关联表的写法去查询,这样主表与每个子表只需关联一次就可以了。?上面的写法改为如下这种,在查询字段中去取关联表对应的字段即可。

2.给相关页面搜索条件酌情添加索引,如果重复率高的条件则不添加,如刚优化完成的区域药品项目药品信息页面有个是否有效的搜索条件,表中该字段几乎都为有效,这种情况下无需创建索引,创建了之后甚至还得浪费存储空间去存储创建的索引;此外在给相应字段创建索引后需注意sql语句的写法,项目优化过程中发现虽然字段加了索引,但是真正查询的时候实际上是没有引用到此索引的,比如在项目优化过程中发现很多时间字段的where条件查询时使用了date_forma函数去转换表本身的字段类型,这种情况会导致该时间字段的索引失效,正确的写法是改为使用str_to_date函数去转变传入的值类型的方式去查询,如下图所示:

右边即为正确写法:

3.关于创建了索引之后在查询过程中是否使用了索引,可以使用 explain 关键字进行分析,写法示例:

假如我们给basic_sys_drug 表的DRUG_CODE创建了索引,使用下面语句查询

explain select * from basic_sys_drug where DRUG_CODE='1000000'

搜索结果为:

?
重点关注其中的key列的值,key的值就是实际使用的索引名。如果为null,则表示没有使用索引。

4.最后附上通过创建索引优化时,索引失效的几种情况,在实际使用时需要注意一下:

<1>.如果where条件中有or,即使其中有条件带索引也不会走索引查询,要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引;
<2>.如果WHERE查询条件里使用了函数(如上述情况中的:WHERE date_forma(column)=…),MYSQL将无法使用索引;
<3>.对于多列索引,如果where条件中没有使用到第一个索引字段,则不会使用索引;
<4>.like模糊查询以%开头(左模糊)不会使用索引,如果是右模糊则不受影响;
<5>.除了上述几种情况如果发现即使创建了索引依然没有生效,则极有可能是mysql在查询之前会大致估算使用全表扫描如果要比使用索引快,或者查询结果占表中数据
的大多数比重,这种情况下也不会使用索引,就像上面第二点中描述的药品信息页面的是否有效字段。所以在创建索引时应考虑创建之后是否会对效率有明显提升,否则
可能会适得其反。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:10:56  更:2022-05-08 08:12:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:26:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码