适合大型级别的百级以上的数据分页:
如果少于10W的用 sql_2/sql_3即可
表1:
create table `t1`(
`id` int(11) not null auto_increment,
`title` char(200) not null,
`content` text not null,
flag tinyint(1) default '0'
);
sql_1:(慢)
sql_1 = "select id,title from t1 limit 开始行数,每页的纪录数";
查询慢,因为没有用到索引(改进用sql_2):
sql_2:(多慢/少快)
sql_2 = "select id,title from t1 order by id desc 开始行数,每页的纪录数";
查询不理想,用到了索引,但是如果数据大时,也会变慢,(改进用):
如果加上where,如:
sql_3:(多慢/少快)
sql_3 = "select id,title from t1 where flag = 1 order by id desc 开始行数,每页的纪录数";
此时加上 where 时,失去了索引的意义了,修改如下:
先修改数表,增加索引:(给where 的字段也加上索引,并放在索引的开始字段位置,即就是把 limit的字段放最后)
create table `t1`(
`id` int(11) not null auto_increment,
`title` char(200) not null,
`content` text not null,
`flag` tinyint(1) default '0',
primary key(`id`),
key `idx_key`(`flag`,`id`), /* 此时为增加的索引 */
);
sql_4 = "select id,title from t1 where flag = 1 order by flag,id limit 开始行数,每页的纪录数";
同时可以考虑分页的情况:(基本思路如下:)
先创建一个主表,只有 id,title,flag,
再创建一个详细表,如 id,content,
从主表先搜索出,再从详细表中获取相关的具体内容
原文转载于推酷网:http://www.tuicool.com/articles/Vri6rq
转载于:https://blog.51cto.com/zhaowonq/1216063