本站中文解释
Handler_read_rnd_next变量表示,在查询时通过位置参数读取数据条目的次数,这些查询的返回内容是固定的顺序组成的,而不是根据索引返回的顺序。比如:ORDER BY X LIMIT Y, Z 这类查询,它会首先把Y行数据读取出来,然后按照X排列,读取Z行数据,而这些查询会被MySQL当做一个文件进行访问,这时就会使用Handler_read_rnd_next变量。
Handler_read_rnd_next只会在使用基于索引的ORDER BY语句和全表扫描的情况下才起作用,如果索引正确的设计,MySQL会把大部分查询优化为以索引或者主键为基础的查询, 这样Handler_read_rnd_next变量就不会起作用。
MySQL 是通过索引就可以快速访问记录,而Handler_read_rnd_next变量表示的是在查询时必须把整个表扫描来访问记录。如果Handler_read_rnd_next变量值变得较高,一般表明数据库表结构设计不合理或者索引未使用, 需要重新设计表结构,建立索引来提升查询性能,以减少这种类型的数据访问次数。
如何设置Handler_read_rnd_next?可以通过以下方式对Handler_read_rnd_next变量进行设置:
1、show variables like ‘%handler_read_rnd_next%’ ;
此语句可以查看出Handler_read_rnd_next变量的当前值;
2、set global handler_read_rnd_next=0;
此语句可以对Handler_read_rnd_next变量值进行设置;
3、select statistics_info.handler_read_rnd_next
from information_schema.statistics_info;
此语句也可以查看Handler_read_rnd_next变量的当前值;