首页 » 网站建设 » phpmysql查询limit技巧_MySQL 事理与优化Limit 查询优化

phpmysql查询limit技巧_MySQL 事理与优化Limit 查询优化

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

假设有表tb_sku,其表构造如下。

表中大约有200w条记录,实行如下的sql 语句大约 4.36s 返回数据

phpmysql查询limit技巧_MySQL 事理与优化Limit 查询优化

select count() from tb_sku;

phpmysql查询limit技巧_MySQL 事理与优化Limit 查询优化
(图片来自网络侵删)

接着我们利用 对其进行分页查询:

select from tb_sku limit 0,10;

limit 语句 个中0 代表起始位置,10 为每页返回的数据数量。

如上图所示,很快就返回了查询结果。

接着我们再利用SQL 语句

select from tb_sku limit 10,10;

语句从记录位置10的位置开始再往下返回10 条记录,也便是第二页的信息。
其返回韶光也是比较快。

然后,我们加大起始位置 到100w如下,

select from tb_sku limit 1000000,10;

此时返回韶光须要0.74 s,这解释了利用limit 对大数据量的表进行分页,位置越靠后效率越低。
拿上面的例子来说,limit 会先对 100w 的数据进行排序,然后再返回10 条数据,而且仅仅返回100w 到 100w 零10条 的记录,其他查询的记录都会丢弃掉,这种做法查询排序的代价非常大。

由此我们须要对大数据量表进行limit 操作进行优化,官方给出的方案是通过覆盖索引和子查询的办法进行优化

根据这个思路首先对id 进行查询

select id from tb_sku order by id limit 1000000,10;

查询结果就只须要0.34s 比之前的0.74s要快多了。
究其缘故原由,由于直接返回id的信息,并没有进行回表操作,以是速率别select 要快

由于我们须要得到select 的信息,也便是tb_user 所有字段的信息,因此须要将上面的查询结果和tb_user 进行jion 操作。

select s. from tb_sku s ,(select id from tb_sku order by id limit 1000000,10 ) t where s.id = t.id;

这里通过查询id 和子查询 的办法将查询结果缩短为 0.38s,比之前直接通过 select 的办法要缩短一倍的查询韶光。

标签:

相关文章

php转国民技巧_PHP轨范员适合创业吗

只要你是一个努力能干主动的人,当你在一个行业深耕5年之后,就会创造人天生长的下一步便是创业。当然如果行业得当的话。什么叫行业得当呢...

网站建设 2024-12-13 阅读0 评论0