博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL优化案例
阅读量:7261 次
发布时间:2019-06-29

本文共 1020 字,大约阅读时间需要 3 分钟。

MySQL优化案例

1.创建索引并传输正确的数据类型

原SQL语句(没有任何修饰):SELECT uid FROM user WHERE mo=13725525225 LIMIT 0,1;在WHERE查询条件后mo字段添加索引-->给mo字段添加索引查看数据库字段数据结构,发现mo字段定义的是char数据类型。而传入的类型为int型,发生了隐式转换。

通过explain查看sql的执行计划

常见的隐式转换,包括字段数据类型以及字符集定义不当导致数据类型的隐式转换。

避免在索引函数中加入函数,会导致索引失败。

2.分页查询SQL优化案例

原SQL语句:开发中常见的开发sql语句SELECT * FROM uyerWHERE sellerId = 765922982AND gmt_modified >= '1970-01-01 08:00:00'AND gmt_modified <= '2013-06-05 17:11:31'LIMIT 255000,5000;MySQL在进行上述翻页写法,在越往后的过程中速度越慢。原因MySQL会读取表中的前M+N数据,M越大,性能越差。优化后SQL语句:SELECT t1.* FROM uyer t1,(select id from uyer sellerid=100 limit 100000,5000) t2WHERE t1.id=t2.id;在t表中sellerid字段添加索引,id为表的主键。

2.子查询SQL优化案例

原SQL语句:SELECT first_nameFROM employeesWHERE emp_no IN (SELECT emp_no FROM salariy_2000 WHERE salary = 5000);MySQL处理逻辑:遍历employees的每一条记录,代入到子查询中去查询。改写子查询:SELECT first_nameFROM employees emp,(SELECT emp_no FROM salariy_2000 WHERE salary = 5000) salWHERE emp.emp_no = sal.emp_no;

分页优化:采用高效的limit写法,来避免分页查询给数据库带来的影响。

子查询:修改子查询保证数据库不会遍历扫描每一个记录

查询需要的字段:不要使用select * 查询所有字段,只查询自己需要的数据字段。

转载地址:http://vqkdm.baihongyu.com/

你可能感兴趣的文章
bugfree3.0.2版本升级--更新版
查看>>
《未来架构师》的教学范例(1)
查看>>
微软私有云最佳工作模式
查看>>
范例解析:学习Android的IPC主板模式
查看>>
Linux运维之网络运维
查看>>
大话nbu一(netbackup的安装和部署)
查看>>
Powershell AWS 自动化管理 (6) - IAM
查看>>
AWS Elastic Block Store和Simple Storage Services区别
查看>>
基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析
查看>>
停更两年,强力回归
查看>>
介绍Windows Server服务器角色、角色服务和功能
查看>>
Win Srv 2012 R2 RDS移动RDS客户端
查看>>
存储知识:数据一致性、分级存储、分层存储与信息生命周期管理
查看>>
SFB 项目经验-28-设置-所有用户-OWA-时区-语言-跳过-时区设置)
查看>>
U2L蔚然成风,曙光为什么能抢了VMware的风头?
查看>>
SQL Server 2012笔记分享-52:可用性指标
查看>>
当一个有性能问题的数据库摆在你的面前,作为责任人,你的处理思路是什么?...
查看>>
Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(6)
查看>>
参观中央财经大学机房安装centos6.4及优化小结
查看>>
Windows Server 2012正式版RDS系列⑥
查看>>