这篇文章给大家分享的是有关怎么提高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限制查询性能的方法