怎么提高MySQL限制查询性能的方法

  介绍

这篇文章给大家分享的是有关怎么提高MySQL限制查询性能的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在MySQL数据库操作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。其实我们可以使用限制关键字来避免全表扫描的情况,从而提高效率。

有个几千万条记录的表> select  *,得到mytable  where  index_col =, xxx  limit 抵消,,限制;

<强>经验:强如果没有团/文本字段,单行记录比较小,可以把限制设大点,会加快速度。

<强>问题:头几万条读取很快,但是速度呈线性下降,同时MySQL服务器cpu 99%,速度不可接受。

调用<代码>解释select * from mytable index_col=xxx限制抵消>

<强>在MySQL优化的文档写到“All"的解释

全表扫描完成每个组合从以前的表的行。这通常不是好如果表第一个表不是常量,并且通常在所有其他情况下非常糟糕。通常情况下,你可以避免所有通过添加索引,允许基于从表中检索的行> select  *,得到mytable  where  id 祝辞,offset 以及id  & lt;, offset  +, limit 以及index_col =, xxx

解释显示type=范围,结果速度非常理想,返回结果快了几十倍。

<强>限制语法:

select  *,得到table  limit [抵消,],rows  |, rows  offset 抵消

限制子句可以被用于强制选择语句返回指定的记录数.LIMIT接受一个或两个数字参数。参数必须是一个整数常量。

如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是0(而不是1)。

为了与PostgreSQL兼容,MySQL也支持句法:限制#抵消#。

mysql>, select  *,得到table  limit  5, 10,,//检索记录6 - 15行//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为1   mysql>, SELECT  *,得到table  LIMIT  95年,1,,//检索记录96 -最后一行//如果只给定一个参数,它表示返回最大的记录行数目,换句话说,LIMIT  n 等价于,LIMIT  0, n   mysql>, SELECT  *,得到table  LIMIT  5,,//检索前5个记录行

MySQL的限制给分页带来了极大的方便,但数据量一大的时候,限制的性能就急剧下降。同样是取10条数据,下面两句就不是一个数量级别的。

SELECT  *,得到table  LIMIT  10000年,10   select  *,得到table  limit  0, 10

文中不是直接使用极限,而是首先获取到抵消的id然后直接使用限制大小来获取数据,根据他的数据,明显要好于直接使用极限。

这里我具体使用数据分两种情况进行测试。

<强> 1,抵消比较小的时候:

select  *,得到table  limit  10、10,//多次运行,时间保持在0.0004 - -0.0005之间   Select  *,得到table  Where  vid >=(Select  vid 得到table  Order  By  vid  limit  10日1),limit  10,//多次运行,时间保持在0.0005 - -0.0006之间,主要的是0.0006

结论:偏移抵消较小的时候,直接使用限制较优。这个显然是子查询的原因。

<强> 2,抵消大的时候:

select  *,得到table  limit  10000年,10,//多次运行,时间保持在0.0187左右   Select  *,得到table  Where  vid >=(Select  vid 得到table  Order  By  vid  limit  10000年,1),limit  10//多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计抵消越大,后者越优。

感谢各位的阅读!关于“怎么提高MySQL限制查询性能的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

怎么提高MySQL限制查询性能的方法