在Mysql中怎么选定第一百万到一百零三十记录, 用limit很慢 你应该知道起始的id也就是说,由于id不连续你应该记录下每个区间起始的id以便在以后的查询中使用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to:xuzuning(唠叨) 是不是再建立一个表?这样?level id lid1 2 11 6 21 10 32 3 12 8 2 2 20 3....把每个level的id都遍历在新表中, 下次要查询的第一百万到一百零三十记录的时候找到lid=一百万和一百零三十所对应的id, 然后用select * from table where level=1 and id between? 不要记录那么多吧?levelpage id1 22 323 70....select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page limit 30这样就可以了 这样你要删除的时侯,维护这个level表会比较麻烦吧page id1 22 323 70我第一页删了一个,例如是30,那你用什么策略更新后面页的id值? 重做一次? to:xuzuning(唠叨) 十分感谢。 我大概明白了些。还有一点小问题。 level表中应该还有一个字段levelpage id level1 2 12 32 13 70 11 3 22 40 23 90 2这个level字段是为文章栏目。是不是这样修改?select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page and level.level=$level limit 30 如果table记录添加或删除了,不就需要重新update level了,这个工作量不是也很大吗? alasika(堕落人间) :我想到一个办法 , 当时估计效率也一般如果你删除的id是30,那么在level表中找大于30的id对应的page。然后更新。小于30的不更新。 alasika(堕落人间) : 还想到一个方法,再建立一个表, deleteid字段:id第一步:搜level表,找到page对应的id, 得出:$startid;第二步:搜deleteid表,count 小于$startid的数量:得出$startlimit第三步:select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page and level.level=$level limit $startlimit,30 windows2003+iis+php,smtp发送邮件失败,请指点! 打开页面A,弹出页面B,定时刷新B的问题,大家看看 数据搜索后php如何返回xml 请大家帮忙,网站的反馈表让人发了几千条垃圾回复 php文件和数据库不在一个服务器上,速度是快了,还是慢了 小问题 文件目录的问题 谁能给我一个处理安全字符串的函数啊 為什么我用php 生成pdf , 不能運行呢?看到的都是原代碼呢? 大家好,我不懂代码,我想有一段微信代码我能改改链接实现微信朋友圈的分享 WAMP5 1.6.1 问题 我朋友应急想要一个焊接类的门户网站,大家推荐一个开源的有没有?
是不是再建立一个表?这样?
level id lid
1 2 1
1 6 2
1 10 3
2 3 1
2 8 2
2 20 3
....
把每个level的id都遍历在新表中, 下次要查询的第一百万到一百零三十记录的时候找到lid=一百万和一百零三十所对应的id, 然后用select * from table where level=1 and id between?
level
page id
1 2
2 32
3 70
....select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page limit 30
这样就可以了
page id
1 2
2 32
3 70
我第一页删了一个,例如是30,那你用什么策略更新后面页的id值? 重做一次?
十分感谢。 我大概明白了些。
还有一点小问题。
level表中应该还有一个字段level
page id level
1 2 1
2 32 1
3 70 1
1 3 2
2 40 2
3 90 2
这个level字段是为文章栏目。是不是这样修改?select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page and level.level=$level limit 30
我想到一个办法 , 当时估计效率也一般
如果你删除的id是30,那么在level表中找大于30的id对应的page。然后更新。小于30的不更新。
还想到一个方法,再建立一个表, deleteid
字段:id
第一步:搜level表,找到page对应的id, 得出:$startid;
第二步:搜deleteid表,count 小于$startid的数量:得出$startlimit
第三步:
select * from tbl_name, level where tbl_name.id>=level.id and level.page=$page and level.level=$level limit $startlimit,30