只查索引ID,加ID限制LIMIT,效率低吗?

解决方案 »

  1.   

    必须要三个sql吧.
    一个是当前的,一个是上一篇的,还有个是下一篇的.
      

  2.   

    一个SQL,SELECT * FROM TABLE WHERE ID=ID+1
    必须有ID序号段
      

  3.   

    可以用一种方法,一次性取得前后几条记录(条数根据实际情况而定),然后出来再用for循环检查得出上一条下一条记录,这样就可以一条sql语句搞定,减少查询数据库的次数,
    select * from table where id>=curid-5 and id<=curid+5
      

  4.   

    select * From TableName where id in (select id from TableName where id > $id limit 1) or id = $id or id in(select id from TableName where id < $id limit 1) order by id
      

  5.   


    这种方法是可以减少查询,但是如果文章ID不是连续,就是说id>=curid-5 and id <=curid+5之间可能是没数据的话那就造成没有ID了
      

  6.   

    慢?那换一种
    select * From TableName where id >= (select id from TableName where id < $id limit 1) order by id  limit 3
    第一条就是上一篇,第二条就是当前,第三条就是下一篇
    这样应该要快点吧
      

  7.   

    select * From TableName where id >= (select id from TableName where id  < $id order by id desc limit 1) order by id  limit 3严谨一点
      

  8.   

    mssql 呢??好像没有limit ,只能用top??
      

  9.   

    俺来说破其中的秘密吧 其实在生成连接的时候根本不需要知道上1个下1个的ID <a href=news.php?id=100>100</a>这是通常的做法?下1个是101? 不一定下一个的连接应该是<a href=news.php?id=100&n=1>下1个</a>news.php要多接收变量 nsql语句select * from news where id>100 limit 1
    同理上1个是
    select * from news where id<100 limit 1
    如果有分类什么的 and whereMSSSQL 啥的其他不支持LIMIT的数据同 道理也是一样的 这只是原理 怎么判断是上1个还是下1个或者是这个的逻辑 大家应该都会 这么秘密的东西20分好少阿
      

  10.   

    刚想到的 其实不用limit 也是可以的 呵呵 读取1行以后 把查询释放掉 不过应该有性能上的损失
      

  11.   


    搞笑,怎么所有人都觉得ID可以>100或者小于100?看看这个ID="9f7614b4-8eb8-40b8-93a2-65d60ea67e42"
    我就不相信这东西能小于100,什么是秘密哦,对于这点技术中国人也有秘密可言么??不知道中国人有没有脸红的习惯,多半忘记了
      

  12.   

    回楼上的 如果ID是字符串就不叫ID了 呵呵 一般ID都是不重复自动增长的INT类型 这里要解决的问题是ID不连续的问题 要是连续这个问题就不存在了楼上的有好算法或者说是方法拿出来共享阿 俺非常的不脸红 因为俺把自己用的而且是非常管用的方法共享出来了 有啥可脸红的很多算法 例如 无限分类的算法 网上有N多 差不多都是递归的 而递归又是PHP的弱项 数K节点的树型结构算法 就是1层窗户纸 1句话就捅破