🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
常规的分页写法如下 ```sql select id,title,type from tablename order by id limit 100,10; ``` 经测试,如果数据量比较大的时候,如近百万的时候。查询语句就变成了如下 ```sql select id,title,subtitle from tablename order by id limit 990000,10; ``` 这时候查询就耗时较长了。 主键id为连续数据,网上推荐的方法一般是子查询和between(,初测BETWEEN速度更快) 写法如下: ```sql select id,title,subtitle from tablename id >=(select id from tablename limit 1000000,1) limit 10; select id,title,subtitle from tablename BETWEEN 1000000 AND 1000010; select id,title,subtitle from tablename where id>= 1000000 AND id<=1000010; ``` 主键为非连续数据。一般是先查出ids 然后用in查询较快 ```sql select id.title,subtitle from tablename in(100000,9999999,8548685,100); ``` 看到segmentfault上一个问答, > 至于优化查询,本质上说,先要优化数据结构,仔细想想你是否必须非要用两个表,一个行不行。还有你对数据库内置函数的了解程度,比如left(), right(), substring(), substring_index()。还有 mid(), substr()。不要动不动就LIKE等等,主要还是多写,根据实际应用场景来做出最优判断。 顺便一说MYSQL配置本身也可以进行很多优化,比如query_cache等等 看来应该抽时间,再次好好研读一下mysql的知识了,基础不牢,地动山摇啊!