mysql 查询 优化

1.基本原则:优化数据访问

  (1)是否想服务器请求了不需要的数据?提取超过需要的列,多表连接时提取所有列,提取所有列都会消耗不必要的资源,提取你所需要的列就可以了。

  (2)MySQL检查了太多的数据吗?通过查看执行时间,查看检查和返回的行,查看检查的行和访问类型,用expain分析。

2.重构查询的方式

  (1)复杂查询和多个查询。将复杂的查询分解成多个简单的查询。

  (2)缩短查询。也就是分治法,每次只执行一小部分,以减少受影响的行数。

  (3)分解联接。把一个多表联接的查询分解成多个单查询,然后在应用程序端实现联接操作。

3.MySQL客户端/服务器协议

  半双工的,不能同时接收和发送。数据是有服务器端推送给客户端的。查询状态:休眠,查询,锁定,分析和统计,拷贝到磁盘上的临时表,排序结果,发送数据。

4.MySQL查询优化过程

5.优化特定类型的查询

  (1)优化cout。只使用一个查询统计同一列中不同值的数量,以减少查询的数量。例如:如果使用的是MyISAM存储引擎,因为它的每个表示记录了总行数的,

    select count(*) from  table where id >5;改成select (select count(*) from table)-count(*) from table where id <=5;会要少扫描很多行。

  (2)优化联接。确保on或using使用的列上有索引。确保goup by或order by只引用了一个表中的列。

  (3)优化子查询。

  (4)优化group by和distinct。

  (5)优化limit和offset。

  (6)优化SQL_CALC_FOUND_ROWS。

  (7)优化联合。

<-未写完,明天接着写->

时间: 2024-12-26 11:18:06

mysql 查询 优化的相关文章

mysql性能优化-慢查询分析、优化索引和配置

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer

MYSQL查询性能优化

查询的基础知识 MySQL查询过程如下图所示: MySQL是通过查询语句的哈希查找来命中缓存的,需要注意的是如果查询语句大小写不一致或者有多余的空格,是不会命中缓存的. 一个查询通常有很多执行方式,查询优化器通过计算开销(随机读取次数)来选择最优的查询. MySQL把所以的查询都当做联接来处理,联接是按照循环嵌套的策略来执行的,如下图所示: 查询的优化和限制 我们需要知道查询优化器会做哪些优化,这样在写查询的时候就可以不需要考虑手动来做这些优化,把这些事情交给查询优化器去做是更好的选择,查询优化

mysql性能优化-慢查询分析,优化索引最佳实践

数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显,我们究竟应该如何对MySQL数据库进行优化? 下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分,查询与索引优化分析等方面来说明这个问题. (一)服务器物理硬件的优化 在挑选硬件服务器时,我们应该从下面几个方面着重对MySQL服务器的硬件配置进行优化,也就是说将项目中的资金着重投入到如下几处: 1.磁盘寻道能力(磁盘I/O),我们现在用的都是SAS15000转的硬盘,

MySQL SQL优化之in与range查询

本文来自:http://hidba.ga/2014/09/24/in-and-range/ 首先我们来说下in()这种方式的查询.在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的.使用in这种方式其实MySQL优化器是转化成了n*m种组合方式来进行查询,最终将返回值合并,有点类似union但是更高效.同时它存在这一些问题: 老版本的MySQL在IN()组合条件过多的时候会发生很多问题.查询优化可

170727、MySQL查询性能优化

MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下我们从数据库的索引和查询语句的设计两个角度介绍如何提高MySQL查询性能. 数据库索引 索引是存储引擎中用于快速找到记录的一种数据结构.索引有多种分类方式,按照存储方式可以分为:聚簇索引和非聚簇索引:按照数据的唯一性可以分为:唯一索引和非唯一索引:按照列个数可以分为:单列索引和多列索引等.索引也有多

mysql数据库优化 开启慢查询

Mysql数据库优化 一.sql及索引优化 如何发现有问题的sql?使用mysql慢查询日志对有效率问题的sql进行监控 //查看是否开启慢查询日志show variables like 'slow_query_log' set global slow_query_log =on;//开启慢查询 //设置保存慢查询日志路径set global slow_query_log_file = '/var/lib/mysql/slow_log.log'; //记录下没有使用索引的query,show v

转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, Sql 代码 : select id from t where num is null; 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 wh

mysql 查询重复的(不区分大小写)数据的SQL优化

在mysql中查询不区分大小写重复的数据,往往会用到子查询,并在子查询中使用upper函数来将条件转化为大写.如: select * from staticcatalogue WHERE UPPER(Source) IN (SELECT UPPER(Source) FROM staticcatalogue GROUP BY UPPER(Source) having count(UPPER(Source))>1) ORDER BY upper(Source) DESC; 这条语句的执行效率是非常低

mysql性能优化-慢查询分析、优化索引和配置【转】

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer