| |
|
|
开发:
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' 搜索结果为:
? 4.最后附上通过创建索引优化时,索引失效的几种情况,在实际使用时需要注意一下: <1>.如果where条件中有or,即使其中有条件带索引也不会走索引查询,要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引; |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
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年11日历 | -2025/11/22 20:50:51- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |