MySQL优化一之limit优化ITeye - 众发娱乐

MySQL优化一之limit优化ITeye

2019-01-11 02:21:45 | 作者: 涵易 | 标签: 左右,查找,取条 | 浏览: 480

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 |

 

 

 

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2

    oracle搜集ITeye

    假如,查询,成果
  • 3

    db2move 指令无法导出表ITeye

    导出,数据,字符
  • 4
  • 5

    Memcached的定位ITeye

    定位,数据,一个
  • 6

    PGA内存办理战略ITeye

    内存,办理,时刻
  • 7

    MySQL命令行ITeye

    输入,数据库,指令
  • 8

    Oracle 表空间与数据文件ITeye

    空间,数据文件,文件
  • 9

    【转】ORACLE近义词总结ITeye

    近义词,方针,数据库
  • 10