MySQL,优化查询的方法
对于数据库,优化查询的方法
1.使用索引
使用索引时,应尽量避免全表扫描,首先应考虑在 where 及 order by ,group by 涉及的列上建立索引。
2.优化SQL语句
1)分析查询语句:通过对查询语句的分析,可以了解查询语句执行情况,找出查询语句执行的瓶颈,从而优化查询语句。
通过explain(查询优化神器)用来查看SQL语句的执行结果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
例如:explain select * from news;
2)任何地方都不要使用select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
3)不在索引列做运算或者使用函数。
4)查询尽可能使用 limit 减少返回的行数,减少数据传输时间和带宽浪费。
3.优化数据库对象
1)优化表的数据类型
使用 procedure analyse()函数对表进行分析,该函数可以对表中列的数据类型提出优化建议。表数据类型第一个原则是:使用能正确地表示和存储数据的最短类型。这样可以减少对磁盘空间、内存、CPU缓存的使用。
使用方法:select * from 表名 procedure analyse();
2)对表进行拆分
通过拆分表可以提高表的访问效率。有两种拆分方法:
a.垂直拆分(按照功能模块)
将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如:我们会建立定义数据库workDB、商品数据库payDB、用户数据库userDB等,分别用于存储项目数据定义表、商品定义表、用户数据表等。
把主键和一些列放在一个表中,然后把主键和另外的列放在零一个表中。如果一个表中某些列常用,而另外一个些不常用,则可以采用垂直拆分。
b.水平拆分(按照规则划分存储)
当一个表中的数据量过大时,我们可以把该表的数据按照某种规则进行划分,例如userID散列,然后存储到多个结构相同的表和不同的库中。
根据一列或者多列数据的值吧数据行放到两个独立的表中。
3)使用中间表来提高查询速度
创建中间表,表结构和源表结构完全相同,转移要统计的数据到中间表,然后在中间表上进行统计,得出想要的结果。
4.硬件优化
1)CPU优化
选择多核和主频高的CPU。
2)内存的优化
使用更大的内存。将尽量多的内存分配给MySQL做缓存。
3)磁盘I/O的优化
a.使用磁盘阵列
RAID 0没有数据冗余,没有数据校验的磁盘陈列。实现RAID 0至少需要两块以上的硬盘,它将两块以上的硬盘合并成一块,数据连续地分割在每块盘上。
RAID 1是将一个两块硬盘所构成RAID硬盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”。
使用RAID-0+1磁盘阵列。RAID 0+1是RAID 0和RAID 1的组合形式。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 1近似的存储性能。
b.调整磁盘调度算法
选择合适的磁盘调度算法,可以减少磁盘的寻道时间。
5.MySQL自身的优化
对MySQL自身的优化主要是对其配置文件my.cnf中的各项参数进行优化调整。如指定MySQL查询缓冲区的大小,指定MySQL允许的最大连接进程数等。
6.应用优化
1)使用数据库连接池
2)实用查询缓存
它的作用是存储 select 查询的文本及其相应结果。如果随后收到一个相同的查询,服务器会从查询缓存中直接得到查询结果。查询缓存适用的对象是更新不频繁的表,当表中数据更改后,查询缓存中的相关条目就会被清空。
JDK资源合集
- 【JDK5】jdk1.5x64位 windows版.zip
- https://download.csdn.net/download/weixin_42350212/15381380
- 【JDK6】jdk-6u45-windows-x64 jdk1.6 64位 Windows版
- https://download.csdn.net/download/weixin_42350212/13668762
- 【JDK7】jdk-7u72-windows-i586-32位
- https://download.csdn.net/download/weixin_42350212/13675800
- 【JDK8】jdk-8u131-linux-x64.tar.gz
- https://download.csdn.net/download/weixin_42350212/13607316
- 【JDK8】jdk-8u131-linux-x64.tar.gz
- https://download.csdn.net/download/weixin_42350212/15809524
MySql数据库资源
- mysql 5.7 64位安装包 windows版
- https://download.csdn.net/download/weixin_42350212/13703523
- mysql5.7 64位安装包 Linux版
- https://download.csdn.net/download/weixin_42350212/13703482
Oracle数据库补丁合集
- 【Oracle数据库官方下载】 OPatch补丁工具20.0+版本
- https://download.csdn.net/download/weixin_42350212/15809703
Oracle客户端工具
- oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64 rpm包合集
- https://download.csdn.net/download/weixin_42350212/15808538
- Oracle客户端x32位 windows版.zip
- https://download.csdn.net/download/weixin_42350212/15352849
Oracle数据库合集【Linux+Windows】
- Oracle10g数据库 Windows32位+Linux32位 合集
- https://download.csdn.net/download/weixin_42350212/15898339
- Oracle数据库10gx32位安装包 Linux版+client客户端
- https://download.csdn.net/download/weixin_42350212/13703422
- Oracle数据库11gx64位安装包 Linux版
- https://download.csdn.net/download/weixin_42350212/13703380
- Oracle数据库11gx64位+Windows版安装包+Oracle客户端+Plsql工具
- https://download.csdn.net/download/weixin_42350212/13703335
- Oracle 11G 11.2.0.3 客户端 for windows 64位
- https://download.csdn.net/download/weixin_42350212/13675747
- oracle 11g Linux64位安装包
- https://download.csdn.net/download/weixin_42350212/13184187
- oracle 11g Linux64位安装包
- https://download.csdn.net/download/weixin_42350212/11247054
- Linux版Oracle11g x32位 数据库安装包
- https://download.csdn.net/download/weixin_42350212/10468316
- spotlight_for_oracle_rac.5.0.1.1022.zip
- https://download.csdn.net/download/weixin_42350212/12368596
- Linux_Oracle客户端全部rpm包
- https://download.csdn.net/download/weixin_42350212/13730264
- Oracle12c客户端+plsql12
- https://download.csdn.net/download/weixin_42350212/15932863
MySQL,优化查询的方法相关推荐
- Mysql简介和Mysql优化查询的方法
MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统.MySQL 完全适用于网络,用其建造的数据库可在因特网 ...
- 数据库优化查询的方法以及大访问量到数据库时的优化
一.数据库优化查询的方法 1.使用索引: 应尽量避免全表扫描,首先考虑在where 以及 order by ,group by 涉及的列上建立索引 2.优化SQL语句: 1>通过explai ...
- mysql 优化查询方法,优化MYSQL查询的详细方法
优化MYSQL查询的详细方法 发布时间:2020-06-08 17:19:28 来源:PHP中文网 阅读:135 作者:三月 不知道大家之前对类似优化MYSQL查询的详细方法的文章有无了解,今天我在这 ...
- MySQL 处理海量数据时的一些优化查询速度方法
在参与实际项目中,当 MySQL 表的数据量达到百万级时,普通的 SQL 查询效率呈直线下降,而且如果 where 中的查询条件较多时,其查询速度无法容忍.想想可知,假如我们查询淘宝的一个订单详情,如 ...
- Mysql处理海量数据时的一些优化查询速度方法
由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍.曾经测试对一个包含400多万条记录(有索引)的 ...
- MySQL 处理海量数据时一些优化查询速度方法
1.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by设计的列上建立 ...
- mysql优化步骤及方法
1.优化步骤 1.开启慢查询日志,设置阈值,比如超过五秒的就是慢sql,并将它抓取出来 慢查询日志,是mysql提供的一种日志记录,它用来记录mysql中响应超过阈值的语句,具体指运行时间超过long ...
- mysql子查询的方式_分布式系统中一种迭代处理MYSQL子查询的方法
1.技术背景 1.1 背景技术 在分布式mysql中间件系统,DML语句中,子查询需要可能涉及到多个数据分片,如果在DML语句使用子查询,需要首先解析出子查询的具体内容,然后根据路由把子查询发往到各个 ...
- MySQL慢查询分析方法
MySQL5.0以上的版本可以支持将执行比较慢的SQL语句记录下来. MySQL> show variables like 'long%'; 注:这个long_query_time是用来定义慢于 ...
最新文章
- windows防火墙支持FTP服务的设置方法
- docker: 解决centos7下cgroup.procs: no such device的错误
- SuSE 10 Enterprise 下 Oracle 10g 关于找不到initorcl.ora文件和控制文件问题
- VTK:图表之VisualizeGraph
- OpenGL天空游戏
- 什么叫「人的格局」?是否有必要培养大的格局或怎么培养?
- Java面向对象(5)--类的成员构造器(构造方法)
- mysql 查看锁表日志_MYSQL 表锁情况查看
- linux time
- c++ 转bcd码_还不会看汽车自诊断系统的故障码?三分钟教你怎么解决
- fso 拒绝访问_CTBS问题及解决.docx
- 【ARM】Linaro Security module
- 服务器数据恢复成功案例(磁盘阵列恢复)
- AUTOSAR架构软件结构简介
- Git学习笔记使用记录
- 地球形状与重力场简述总结
- C++对象模型-读书笔记
- 糗事百科 android源码,仿糗事百科Android客户端源码
- win32bridge.server.exe函数不正确解决方案
- ei eo eq什么意思_软件功能点估算
热门文章
- 无人驾驶出租车已经在北京全面开放,未来普通人还需要学驾照吗?
- All Things Intelligence—Baidu World 2020
- 矩阵的最大路径和问题
- 引领性指标与滞后性指标_测量可用性组同步滞后
- azure云数据库_如何使用Cloud Shell创建Azure SQL数据库
- sql机器学习服务_机器学习服务–在SQL Server中配置R服务
- sql server 群集_SQL Server 2014 –安装群集实例–分步(3/3)
- MySQL复习值代码知识点(2)
- MongoDB DBA 实践6-----MongoDB的分片集群部署
- JavaScript基础学习(一)—JavaScript简介