我试图向登录用户显示他们每次登录时尚未看到的通知数。为此,我有以下疑问:
"select count(eventId) as count from notifications where updateId in("
# 2-the updates NOT IN what the user has seen
"select updateId from updates where updateId not in("
# 1-the updates the user has seen
"select updateId from seen_updates where memberId={}))".format(memberId))
问题是,随着通知数量的增加,这似乎需要一段时间。有没有一种方法可以通过连接做得更好?
mysql> describe notifications; +----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+-------+ | eventId | int(10) unsigned | NO | | NULL | | | updateId | int(10) unsigned | YES | | NULL | | +----------+------------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> describe updates; +---------------+------------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+------------------+------+-----+-------------------+----------------+ | updated | timestamp | NO | | CURRENT_TIMESTAMP | | | updateId | int(10) unsigned | NO | PRI | NULL | auto_increment | | eventCategory | varchar(40) | YES | | NULL | | | eventsCount | int(10) unsigned | NO | | NULL | | +---------------+------------------+------+-----+-------------------+----------------+ 4 rows in set (0.00 sec) mysql> describe seen_updates; +----------+------------------+------+-----+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+-------------------+-------+ | updateId | int(10) unsigned | NO | | NULL | | | memberId | int(10) unsigned | NO | | NULL | | | updated | timestamp | NO | | CURRENT_TIMESTAMP | | +----------+------------
没有必要将查询更改为连接并承担风险,因为根据架构,两个索引后面的详细信息首先是主要缺失的对象,这会导致速度变慢
>
表“seed\u Updates”的“member\u id”列上的索引
通过连接,您可以这样做:
select count(eventId) as count
from notifications
inner join updates
on updates.updateId = notifications.updateId
left join seen_updates
on seen_updates.updateId = notifications.updateId
and seen_updates.memberId = {}
where seen_updates.updateId is null
根据您的数据结构,您甚至可能不需要包含内部连接更新的子句。
通知似乎是合乎逻辑的。updateId
需要在updates
表中有一个现有的对应项。仅当不能保证内部联接
需要保留时。
Firebase远程配置有其他选择吗?我需要为中国市场提供一个应用程序,我不确定它是否会起作用
我想在我的应用程序中显示一个外部网站。与Android/iOS的WebView完全相同。 Expo的React Native WebView不支持web平台。https://docs.expo.io/versions/latest/sdk/webview/ 是否有一个世博会友好的替代方案,从web平台中的URL显示外部网站?
我有一个脚本,需要遍历数千个不同但简单的选项。 我可以使用if... elif来迭代它们,但是我想知道是否有比成千上万个elifs更快/更好的选择。举个例子 我将要做的事情通常是运行某种函数。
本文向大家介绍eclipse连接不到genymotion问题的解决方案,包括了eclipse连接不到genymotion问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 (1)很多朋友在使用genymotion开发安卓应用程序的时候,会遇见完全正确的安装但是在运行的时候仍然找不到,genymotion上的设备,在打开的devices上找不到如下图所示: (2)解决的方法如下: 1、关闭ecl
我有两个联合查询,如下所示: 现在,我想在另一个查询中使用此联合。 当我运行它时,我得到ORA-00904:"P"."CUSTOMER_NO":无效的标识符。我需要将h1.customer_no加入到外部查询customer_no。 我看到过一些带有rank的查询,但我不太明白。如何将内部查询与外部查询连接起来? 提前感谢。