我应该如何在mysql中查询

用户名

我有一个Web应用程序,其中我根据该表模式显示一系列帖子(也有成千上万的行,例如此行和其他列(此问题不需要删除)):

+---------+----------+----------+
|   ID    |   COL1   |   COL2   |
+---------+----------+----------+
|   1     |    NULL  |   ----   |
|   2     |    ---   |   NULL   |
|   3     |    NULL  |   ----   |
|   4     |    ---   |   NULL   |
|   5     |    NULL  |   NULL   |
|   6     |    ---   |   NULL   |
|   7     |    NULL  |   ----   |
|   8     |    ---   |   NULL   |
+---------+----------+----------+

我用这个查询:-

SELECT * from `TABLE` WHERE `COL1` IS NOT NULL AND `COL2` IS NULL ORDER BY `COL1`;

我得到的结果集像:

+---------+----------+----------+
|   ID    |   COL1   |   COL2   |
+---------+----------+----------+
|   12    |    ---   |   NULL   |
|   1     |    ---   |   NULL   |
|   6     |    ---   |   NULL   |
|   8     |    ---   |   NULL   |
|  11     |    ---   |   NULL   |
|  13     |    ---   |   NULL   |
|   5     |    ---   |   NULL   |
|   9     |    ---   |   NULL   |
|   17    |    ---   |   NULL   |
|   21    |    ---   |   NULL   |
|   23    |    ---   |   NULL   |
|   4     |    ---   |   NULL   |
|   32    |    ---   |   NULL   |
|   58    |    ---   |   NULL   |
|   61    |    ---   |   NULL   |
|   43    |    ---   |   NULL   |
+---------+----------+----------+

注意,由于order by子句,ID列变得混乱。

我有适当的索引来优化这些查询。现在,让我解释一下真正的问题。我的网络应用程序中有一种延迟加载功能。因此,我LIMIT 10在第一页查询后使用a来显示每页大约10个帖子

直到这里我们都很好。但是,真正的问题出在我必须加载第二页时。我现在要查询什么?我不希望重复这些帖子。而且几乎每15秒就会出现一则新帖子,使它们排在结果集的顶部(我直指第一行)(我不想在第二或第三页中显示这些最新帖子,但它们会改变结果集大小,因此我无法LIMIT 10,10用于第二页,以此类推,因为帖子将重复出现。)

现在,我所知道的就是我显示的帖子的最后一个ID。21在这里因此,我想显示ID的帖子23,4,32,58,61,43(请参阅上面的结果集表)。现在,我是否不使用LIMIT子句就加载所有行,并显示出现在id之后的10个id 21但是为此,我将不得不遍历数千个无用的行。但是,我不能LIMIT肯定地在第二,第三页...中使用子句。另外,ID混乱,所以我绝对不能使用WHERE ID>...那么,我们现在要去哪里?

德瓦尔·坎德尔瓦尔

嗯..我想了一会儿,提出了2个解决方案。:-

  1. 存储已经显示并查询的帖子的ID WHERE ID NOT IN(id1,id2,...)但是,这将花费您额外的内存。而且,如果用户加载100个页面且ID在100000s以内,则单个GET请求将无法处理它。至少不是在所有浏览器中。可以使用POST请求。

  2. 更改显示帖子的方式COL1我不知道这是否对您来说是个好方法。但是,它可以节省您的带宽,并使代码更整洁。这可能也是一个更好的方法。我建议:- SELECT * from TABLE where COL1 IS NOT NULL AND COL2 IS NULL AND Id>.. ORDER BY ID DESC LIMIT 10,10这可能会影响您跨越式显示帖子的方式。但是,正如您在评论中所说,您检查帖子是否符合条件并将COL1从NULL更改为当前时间戳,我想帖子越新,您希望在上面显示的内容越多。这只是一个主意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在我的MySQL查询中执行'%'

来自分类Dev

我应该如何在MySQL中过滤日期

来自分类Dev

我应该如何构造这个MySQL查询?

来自分类Dev

我应该如何在IBM FileNet中适当地进行页面查询?

来自分类Dev

如何在MySQL中执行此查询,我应该使用左联接还是右联接或内部联接使用哪一个?

来自分类Dev

如何在mysql中查询

来自分类Dev

我应该如何修改查询

来自分类Dev

我应该如何更改查询?

来自分类Dev

我应该如何修改查询

来自分类Dev

我应该如何查询以获取Firebase中的节点列表

来自分类Dev

我应该如何在Spring Integration中构建我的消息?

来自分类Dev

我应该如何在Rails中实现我的Ruby代码?

来自分类Dev

我应该如何索引我的 MySQL 表中的列?

来自分类Dev

当我需要按名字和姓氏查询时,应该如何在Oracle中建立FULLNAME字段的索引?

来自分类Dev

我应该如何在Node中管理内存中的数据?

来自分类Dev

我应该如何在像这样的INNER JOIN查询中指定查询条件?

来自分类Dev

如何在MySQL查询中替换“空集”?

来自分类Dev

如何在yii中运行mysql查询

来自分类Dev

如何在MySQL中优化查询?

来自分类Dev

如何在MySQL中查询许多表

来自分类Dev

如何在mysql查询中执行循环?

来自分类Dev

如何在MySQL中编写此查询?

来自分类Dev

如何在MySQL中查询soundex()

来自分类Dev

如何在mysql中运行子查询

来自分类Dev

如何在MySQL中调整选择查询?

来自分类Dev

如何在mysql中查询不同的记录

来自分类Dev

如何在MySql查询中忽略NULL

来自分类Dev

如何在MySQL中优化查询?

来自分类Dev

如何在MySQL中执行多个查询