我正在尝试设计一个通知架构,其中每个通知都有一个 UID,并且需要传递给多个用户。每个用户设备都有最新通知的本地缓存。当用户设备上线时,它总是会检查是否有任何新通知,并提取所有针对该用户的通知。设备会保留其同步的最新通知的 UID,并使用该 UID 从服务器获取更新的通知。
我想知道在 MySQL 表中实现这一点的最佳方法,以使其可扩展为超过 500K 用户。
我有一个通知详细信息表,其中通知 UID 是自动增量主键。我需要关于用户映射表的建议(忽略外键约束)
CREATE TABLE user_notifications_mapping (
user_id INT UNSIGNED NOT NULL,
notification_id BIGINT UNSIGNED NOT NULL,
UNIQUE KEY (user_id, notification_id)
) ENGINE=InnoDB;
但我怀疑在进行类似查询时它是否会是最佳性能
SELECT notification_id FROM user_notifications_mapping WHERE user_id = <user-id> AND notification_id > <last-notification-uid>