mysql的group by优化跟limit优化

优化group by查询:

explain SELECT actor.first_name, actor.last_name, COUNT(*) from sakila.film_actor INNER JOIN sakila.actor USING(actor_id) GROUP BY film_actor.actor_id;

上面这条sql 使用到了临时表,文件排序,因此可以进行下列改写:

Explain SELECT actor.first_name,actor.last_name,c.cnt from sakila.actor INNER JOIN
(SELECT actor_id, COUNT(*) AS cnt FROM sakila.film_actor GROUP BY actor_id) AS c USING(actor_id);

此方法用了子查询进行查询优化

优化Limit查询
limit常用于分页处理,时常会伴随order by从句使用,因此大多数时候会使用Filesorts这样会造成大量的IO问题
SELECT film_id, description FROM sakila.film ORDER BY title LIMIT 50,5;
优化步骤1:使用有索引的列或者主键进行Order by 操作
SELECT film_id, description FROM sakila.film ORDER BY film_id LIMIT 50, 5;
步骤2:记录上次返回的主键,在下次查询时使用主键过滤
SELECT film_id, description FROM sakila.film WHERE film_id > 55 and film_id <= 60 ORDER BY film_id LIMIT 1, 5;此方法避免了数据量大时扫描过多的记录

原文地址:https://www.cnblogs.com/zhirusi/p/12273408.html

时间: 2024-08-08 00:07:37

mysql的group by优化跟limit优化的相关文章

Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架

MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千 万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这

MySQL优化器 limit影响的case

测试的用例中,因为limit的大小不同,而产生了完全不同的执行计划: 1. 测试case: create table t1 ( f1 int(11) not null, f2 int(11) not null, f3 int(11) not null, f4 tinyint(1) not null, primary key (f1), unique key (f2, f3), key (f4) ) engine=innodb; insert into t1 values (1,1,991,1),

mysql大数据量之limit优化

背景:当数据库里面的数据达到几百万条上千万条的时候,如果要分页的时候(不过一般分页不会有这么多),如果业务要求这么做那我们需要如何解决呢?我用的本地一个自己生产的一张表有五百多万的表,来进行测试,表名为big_data;首先我们看如下几条sql语句:在这之前我们开启profiling来监测sql语句执行的情况.set profiling=1;1.查询从第10w条数据开始分页10条2.查询从第20w条数据分页10条3.查询从第30w条数据分页10条 3.查询从第300w条数据分页10条 3.查询从

Mysql性能优化----SQL语句优化、索引优化、数据库结构优化、系统配置优化、服务器硬件优化

一.SQL语句优化 1-1.MySQL慢日志 1).慢日志开启方式和存储格式 如何发现有问题的SQL? 使用Mysql慢日志对有效率问题的SQL进行监控 前期准备 mysql> show variables like '%log_queri%'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | log_queries_no

MySQL之查询性能优化五(优化特定类型的查询)

本文将介绍如何优化特定类型的查询. 1.优化count()查询 count()聚合函数,以及如何优化使用了该函数的查询,很可能是mysql中最容易被误解的前10个话题之一 count() 是一个特殊的函数,有两种非常不同的作用.它可以统计某个列值的数量,也可以统计行数. 统计列值 要求列值是非空的.(不统计null,即null值计数为0) count()的另一个用处是统计结果集的行数.当mysql确认括号的表达式值不可能为空时,实际上就是统计 行数.最简单的就是当我们使用count(*)的时候,

mysql性能优化-索引与优化

http://hongge.blog.51cto.com/ 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 不合理需求造成资源投入产出比过低,这里我们就用一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计,附加要求:实时更新 从功能上来看非常容易实现,执行一条SELECT COUNT(*) from 表名 的Query 就可以得到结果.但是,如果我们采用不是MyISAM 存储引擎,而是使用的Innodb 的存储引擎,那么大家可以试想一下,如果存放帖子的表中已经有上千万

MySQL 数据库性能优化之SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就

MYSQL数据库性能优化之SQL优化【一】

转载:http://wulijun.github.io/2012/08/24/mysql-sql-optimization.html 优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占 用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了.order by, group b

MySQL 百万级、千万级 分页优化

查询字段一较长字符串的时候,表设计时要为该字段多加一个字段,如,存储网址的字段 查询的时候,不要直接查询字符串,效率低下,应该查诡该字串的crc32或md5 如何优化Mysql千万级快速分页 Limit 1,111 数据大了确实有些性能上的问题,而通过各种方法给用上where id >= XX,这样用上索引的id号可能速度上快点儿.By:jack Mysql limit分页慢的解决办法(Mysql limit 优化,百万至千万条记录实现快速分页) MySql 性能到底能有多高?用了php半年多,