当提到查询数据库中某个指定起始位置到特定位置的数据时,我们的第一个反应是采用如下的语法格式:
limit是mysql的语法这样的用法对小数量的数据无伤大雅,但是对于大数据里的数据假如有1000万条数据存在数据库中,我只想取最后的1000条,这是如果仍然用上面的语法的话则是:
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
select * from table limit 9999000,1000
但是这样的话会给数据库带来很大的性能开销,会造成数据库频繁的I/O检索,等同于进行全表的扫描,对数据库的杀上力很大非常的不明智。
比较推荐的做法是(一般我们建立新表的时候为了方便都是去的id自增的即auto increment):那我们就可以采取一个变通如果还是取的是最后的1000条,我们可以这样写sql脚本:select * from table where id > 9999000 limit 1000;这样可以利用主键的索引从而较好的减少了数据库的io检索操作。