mysql获取查询策略语句_MySQL数据库查询性能优化策略

优化查询

使用Explain语句分析查询语句

Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。

通过对查询语句的分析,可以了解查询语句的执行情况,找出查询语句执行的瓶颈,从而优化查询语句.

使用索引查询

MySql中提高性能的一个最有效的方式就是对数据表设计合理的索引.

索引提供了高效访问数据的方法,并且加快查询速度.

如果查询时没有使用索引,那么查询语句将扫描表中所有的记录.在数据量大的时候,这样查询速度会很慢.

使用索引进行查询,查询语句可以根据索引快速定位到待查询记录,从而减少查询记录数,达到提高查询速度的目的.

几种特殊情况(使用带索引的字段查询时,索引不起作用)

使用Like关键字,如果匹配字符串的第一个字符为"%",索引不会起作用,如果第一个关键字不是 "%",那么索引会起作用.

MySQL可以为多个字段创建索引,一个索引可以包括16个字段,只有查询条件中使用这些字段中的第一个字段时,索引才会被使用.

查询关键字只有 OR ,且OR左右两边的列都是索引时,索引才起作用.

优化子查询

子查询虽然可以使查询语句更灵活,但执行效率不高.因为MySQL需要为内层查询语句的查询结果建立一个临时表.

可以使用连接查询代替子查询,连接查询不需要建立临时表,其速度比子查询要快.

优化数据访问

1.减少请求的数据量

只返回必要的列,最好不要用 select * 这种语法;

只返回必要的行,使用limit语句限制获取数据的条数;

缓存重复查询的数据: 使用缓存可以避免在数据库中查询,特别是在数据被经常反复查询时,缓存带来的查询性能的提升,将会是非常明显的.

2.减少服务器端扫描的行数

最有效的方法是: 使用索引来覆盖查询;

重构查询方式

1.切分大查询

一个大查询如果一次性执行的话,可能一次锁住很多数据,占满整个事务日志,耗尽系统资源,阻塞很多小的但重要的查询.

2.分解大连接查询

将一个大连接查询分解成对每一个表进行一次单表查询,然后在应用程序中进行关联.

这样做的好处有:

让缓存更高效. 对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用了.而分解后的多个查询,即使其中一个表的查询发生变化,那么对于其他表的查询缓存依然可以使用.

分解成单表查询,这些单表查询的缓存结果更可能被其他查询使用到,从而减少冗余记录的查询.

减少锁竞争.

在应用层进行连接,可以更容易的对数据库进行拆分,从而更容易做到高性能和可伸缩.

优化数据库结构

1.将字段很多的表分解成多个表

对于字段较多的表,如果有些字段的使用频率很低,可将这些字段分离出来形成了新表.

当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢.

2.增加中间表

对于经常需要联合查询的表,可以建立中间表以提高查询效率.

3.优化插入记录的速度

插入记录时,影响插入速度的主要是索引,唯一性校验,一次插入记录条数等.根据这些情况可以分别进行优化.

优化MySQL服务器

1.优化服务器硬件

针对性能瓶颈,提高硬件配置,可以提高数据库的查询和更新速度.

配置较大的内存.

配置高速磁盘系统,以减少读盘的等待时间.

合理分配磁盘IO.

配置多处理器,MySQL是多线程的数据库,多处理器可同时执行多个线程.

2.优化MySQL参数

优化MySQL参数可以提高资源利用率,从而提高服务器性能.

以上就是MySQL数据库查询性能优化策略的详细内容,更多关于MySQL查询性能优化的资料请关注聚米学院其它相关文章!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

松弛变量可以为负吗_如何为松弛安装(非官方)暗模式

松弛变量可以为负吗Slack still doesn’t have a dark mode. They have dark themes, but those only let you customize the sidebar colors, leaving the main window white. With the release of system-wide dark modes on macOS Mojave and Windows 10, Slack feels very …

如何使用系统自带的日志转储功能logroate.存放应用日志

Linux日志服务介绍 1. 在Linux系统,大部分日志都是由syslog日志服务驱动和管理的 syslog服务由两个重要的配置文件控制管理,分别是/etc/syslog.conf主配置文件和/etc/sysconfig/syslog辅助 配置文件, /etc/init.d/syslog是启动脚本…

shell 多行注释

:<<BLOCK 中间为要注释的内容 BLOCK转载于:https://www.cnblogs.com/S--S/p/9817660.html

natcat for mysql_用Navicat for mysql连接mysql报错1251-解决办法

TP框架连接mongodb报错及解决办法mongodb版本3.4.7 1.认证错误:Failed to connect to: localhost:27017: Authentication failed on database test ...Loadrunner参数化连接oracle、mysql数据源报错及解决办法Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是…

如何在Mac上设置FaceTime

FaceTime is Apple’s built-in video and audio calling app. It pairs with your iPhone and allows you to make phone calls on macOS. FaceTime是Apple的内置视频和音频通话应用程序。 它可以与iPhone配对使用&#xff0c;并允许您在macOS上拨打电话。 You don’t need an…

移动视频技术

在语音通信已得到教育、医疗、社交、电子商务等多个领域的移动应用和充分发展的今天&#xff0c;人们已不满足于仅依靠语音电话来传达信息。开发者都需要结合自身业务场景在其产品中嵌入语音聊天、视频通话、语音对讲等实时通话功能。但较高的技术门槛和开发成本成为普通开发者…

hashlib 模块用来进行hash

hashlib的基本概述&#xff1a; python中的 hashlib 模块用来进行hash 或者md5加密&#xff0c;而且这种加密是不可逆的&#xff0c;所以这种算法又被称为摘要算法&#xff0c; 其支持Opennssl库提供的所有算法&#xff0c;包括 md5、sha1、sha224、sha256、sha512 等。 hash是…

在Ubuntu 11.10中将窗口按钮移回右侧

As of Ubuntu 10.04, the minimize, maximize, and close buttons on all windows were moved to the left side and the system menu was removed. Prior to version 11.10, you could use several methods to restore the original button arrangement. 从Ubuntu 10.04开始&a…

java测试开发_测试开发系类之Java常用知识点

测试需要的两门语言&#xff1a;Java&#xff0c;Python测试开发&#xff1a;开发测试脚本->开发测试框架Java需要掌握内容&#xff1a;基础语法、Java面向对象相关概念、Java常用类、基础测试框架Java常用类&#xff1a;IO相关类&#xff0c;包括&#xff1a;字节流InputSt…

kafka 服务端消费者和生产者的配置

在kafka的安装目录下&#xff0c;config目录下有个名字叫做producer.properties的配置文件 #指定kafka节点列表&#xff0c;用于获取metadata&#xff0c;不必全部指定 #需要kafka的服务器地址&#xff0c;来获取每一个topic的分片数等元数据信息。 metadata.broker.listkafka0…

如何在Windows 10上使用触摸板手势

If you’ve used a touchpad in Windows 10, you’re no doubt aware of the basic single-finger tapping and two-finger scrolling gestures. Windows 10 also packs in some additional gestures you might not have tried. 如果您在Windows 10中使用了触摸板&#xff0c;那…

java全栈开发工程师_谈谈我对Java(J2EE)全栈工程师的理解

很多刚从事Java开发的同学都有一个疑问&#xff0c;到底是向全栈式程序员方向发展还是做精通某种技术的专才&#xff1f;对于这个问题也是见仁见智。 在给出我的观点之前&#xff0c;我们先来分析一下全栈工程师的种类和专才的种类 &#xff0c;之后关于这个问题的答案就很清楚…

多网卡命名规则

使用iptables做nat路由&#xff0c;需要几张网卡&#xff0c;以下命令很有用 1.首先你要先确认你系统加载的网卡&#xff0c;lspci|grep -i eth,如果出现unknow情况或者未识别&#xff0c;最好换网卡&#xff0c;或者是驱动没有加载&#xff0c;需要到/lib/modules的子目录driv…

相机模拟光圈_我的相机应该使用什么光圈?

相机模拟光圈Aperture, along with shutter speed and ISO, is one of the three most important settings you control when you take a photo. It affects both the amount of light that hits your camera sensor and the depth of field of your images. Let’s look at ho…

2018-2019-1 20165234 《信息安全系统设计基础》第四周学习总结

一、学习目标 了解ISA抽象的作用 掌握ISA&#xff0c;并能举一反三学习其他体系结构 了解流水线和实现方式二、学习内容 Y86-64指令 movq指令 irmovq rrmovq mrmovq rmmovq四个整数操指令 addq,subq,andq,xorq只对寄存器数据进行操作7个跳转指令 cmovle cmovl cmove cmovne cmo…

python数据库实例_Python3.6简单的操作Mysql数据库的三个实例

安装pymysql参考&#xff1a;https://github.com/PyMySQL/PyMySQL/pip install pymsql实例一import pymysql# 创建连接# 参数依次对应服务器地址&#xff0c;用户名&#xff0c;密码&#xff0c;数据库conn pymysql.connect(host127.0.0.1, userroot, passwd123456, dbdemo)# …

Python之钉钉机器人推送天气预报

通过Python脚本结合钉钉机器人&#xff0c;定时向钉钉群推送天气预报 #!/usr/bin/python # -*- coding: utf-8 -*- # Author: aikergdedu.ml # My blog http://m51cto.51cto.blog.com import requests import re import urllib2 import json import sys import osheaders {Co…

google +按钮_如何禁用或改善Google的Google+集成

google 按钮If you’ve used Google lately, you’ve probably seen Google taking over Google’s search results. You don’t have to put up with it — you can disable the integration, show better social-networking pages or hide those pesky Google notifications.…

P2680 运输计划

传送门 十分显然完成工作的时间和航耗时最长的运输计划有关 所以题目意思就是要求最大值最小 所以可以想到二分 把所有大于mid时间的航线打上标记&#xff0c;显然删边只能在所有这些航线的公共路径上 要如何快速打标记是个问题 二分已经有一个log&#xff0c;所以只能承受O(n)…

java 集合读写同步_JAVA多线程学习十六 - 同步集合类的应用

1.引言在多线程的环境中&#xff0c;如果想要使用容器类&#xff0c;就需要注意所使用的容器类是否是线程安全的。在最早开始&#xff0c;人们一般都在使用同步容器(Vector,HashTable),其基本的原理&#xff0c;就是针对容器的每一个操作&#xff0c;都添加synchronized来进行同…