`

MySQL优化一之limit优化

 
阅读更多

 

1.limit的几种形式

   limit m,n 从m条后一条往后取n条数据,如0,10就是从第一条开始取10条数据。

   limit n  --> limit 0,n  --> limit 0 offset n

 

2.问题:

   我们都知道MySQL分页使用limit,是不是所有的分页我们都可以使用limit呢?

 

3.结论:

   当然不是啦,大表的时候limit 10000,10 的时候MYSQL会扫描满足条件的100010行然后取后面的10行,

 如果limit的这个值很大的话,当然扫描的行数就变多了,所以查询时间会变慢。

 

 4.优化 

    整个表的数据量在100W条左右。

    方法一:子查询

    从 SELECT * FROM `mytest`.`table_rm001` ORDER BY id DESC  LIMIT 100000,50;

    到 SELECT * FROM `mytest`.`table_rm001` where id >  (select id  from `mytest`.`table_rm001` order by id limit 100000,1) limit 50

    多次测试了下时间发现性能还是提高很多的。

    第一条SQL平均在400ms左右,第二条SQL平均在60ms左右。

 

    方法二:超过一半反向查找 

    正向查找: (当前页 – 1) * 页长度

    反向查找: 总记录 – 当前页 * 页长度 

 

 

建表语句:
CREATE TABLE `table_rm001` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `varchar` varchar(32) DEFAULT NULL,
  `tinyint` tinyint(4) DEFAULT NULL,
  `smallint` smallint(6) DEFAULT NULL,
  `mediumint` mediumint(9) DEFAULT NULL,
  `bigint` bigint(20) DEFAULT NULL,
  `integer` int(11) DEFAULT NULL,
  `float` float DEFAULT NULL,
  `real` double DEFAULT NULL,
  `decimal` decimal(10,0) DEFAULT NULL,
  `boolean` tinyint(1) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `time` time DEFAULT NULL,
  `year` year(4) DEFAULT NULL,
  `text` text,
  `blob` blob,
  PRIMARY KEY (`id`),
  KEY `idx_float` (`float`),
  KEY `idx_varchar` (`varchar`)
) ENGINE=MyISAM AUTO_INCREMENT=3000001 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT |

 

 

 

 

分享到:
评论

相关推荐

    mysql分页之limit优化技巧

    本文档针对mysql分页之limit慢的问题,使用联合索引在大数据量的情况下优化limit分页的性能

    MYSQL分页limit速度太慢的优化方法

    以下是一些针对MySQL `LIMIT` 分页速度慢的优化方法: 1. **避免大`OFFSET`值**: 当`OFFSET`值很大时,MySQL会跳过很多行才能到达需要返回的数据。例如,`LIMIT 200000, 10`需要扫描200010行,这是非常低效的。...

    MySQL数据库优化SQL篇PPT课件.pptx

    SELECT语句是MySQL数据库中最常用的语句之一。SELECT语句的优化是非常重要的。通过优化SELECT语句,可以提高数据库的性能和效率。 三、IN和EXIST语句 IN和EXIST语句是MySQL数据库中常用的语句。IN语句用于判断某个...

    Mysql优化 PPT

    总的来说,这份"Mysql优化 PPT"应该是一份全面的指南,帮助读者理解MySQL性能优化的各个方面,并提供实用的解决方案。通过深入学习和实践,我们可以显著提升MySQL数据库的运行效率,从而提高整个应用系统的性能。

    MySQL GUI Tools MYSQL优化工具

    MySQL GUI Tools是一款强大的图形用户界面工具集合,专为MySQL数据库管理系统设计,旨在简化数据库的管理和优化。这款工具集包括了多种实用工具,如MySQL Workbench、MySQL Query Browser、MySQL Administrator等,...

    MySQL优化 实战视频课程

    #### 一、MySQL优化基础 ##### 1.1 数据库优化的重要性 - **背景介绍**:随着互联网技术的发展,数据量呈指数级增长,对数据库系统的性能要求越来越高。 - **核心价值**:通过有效的优化措施可以提升数据库处理速度...

    MySQL数据库查询优化

    课程大纲: 第1课 数据库与关系代数 综述数据库、关系代数、查询优化技术 综述数据库调优技术 预计时间1小时 第2课 数据库查询优化技术总揽 ...真正认识、掌握MySQL的查询优化技术,大步流星步入查询优化的高手之列。

    MySQL优化大揭秘.rar

    MySQL优化是数据库管理中至关重要的一个环节,它旨在提高数据查询效率、降低系统资源消耗,以确保服务的稳定性和响应速度。"MySQL优化大揭秘"这个压缩包中的"SQL.pdf"很可能包含了关于如何优化MySQL数据库的详细教程...

    Mysql优化技巧之Limit查询的优化分析

    前言 在实际业务中对于分页来说是一个比较常见的业务需求。那么就会使用到limit查询,当我们在使用Limit查询的时候,在数据比较小、或者只查询前面一部分数据的时候...mysql> SELECT * FROM student LIMIT 1000000,1

    mysql优化方案

    本文讨论了 MYSQL 优化方案的多个方面,涵盖 BIOS 设置优化、IO 子系统优化、Schema 设计优化、索引设计优化和无法使用索引的场景等方面的知识点,旨在帮助读者更好地了解 MYSQL 优化的方法和策略。

    mysql分页的limit参数简单示例

    Mysql的分页的两个参数 select * from user limit 1,2 ... 您可能感兴趣的文章:详解MySQL的limit用法和分页查询语句的性能分析MYSQL分页limit速度太慢的优化方法mysql limit分页优化方法分享Mysql limit

    【DISTINCT】优化之MySQL官方文档翻译

    ### DISTINCT优化之MySQL官方文档翻译解析 #### 一、引言 在数据库查询操作中,经常需要使用`DISTINCT`关键字来去除重复记录,确保结果集中的每一条记录都是唯一的。然而,在某些场景下,使用`DISTINCT`可能会导致...

    MySQL性能优化 SQL优化方法技巧

    MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还能有效减少硬件资源的投入成本。本文将详细介绍MySQL...

    十三MySQL性能优化详解.pdf

    最基本的优化之一就是使表在磁盘上占据的空间尽可能小。这能带来性能非常大的提升,因为数据小,磁盘读入较快,并且在查询过程中表内容被处理所占用的内存更少。同时,在更小的列上建索引,索引也会占用更少的资源。...

    mysql 优化.docx

    EXPLAIN命令是MySQL优化的重要工具之一。它可以用来查看SQL语句的执行计划,了解SQL语句的执行过程、索引的使用情况、扫描行数等信息。通过EXPLAIN命令,我们可以了解SQL语句的性能瓶颈,进行针对性的优化。 二、...

    mysql性能优化教程.pdf (by caoz)

    - **索引类型**:B树是最常见的索引结构之一;Hash索引适用于key-value查询,但不支持范围查询和排序。 ##### 2.2 如何理解数据索引的结构 - **B树索引**:大多数数据库使用B树或其变体作为索引结构。这种结构的...

Global site tag (gtag.js) - Google Analytics