优化聊天应用数据库

Optimizing chat application database

我使用数据库开发一个简单的聊天应用程序。项目的数据库如图所示。

邮件中的方向栏table只是判断user1是发件人还是user2是发件人。

我使用此查询来获取消息:

SELECT  TextContent,Direction FROM Messages
WHERE   User1 = 1 AND User2 = 2 
ORDER BY Date

User1 和 User2 的值只是为了说明。

我有两个问题:

  1. 我没有为消息选择主键 table。我应该简单地选择 ID 列作为主键还是 select 多个列作为主键?

  2. 我应该在 (User1,User2, Date) 列或 (User1,User2,ID) 列 ?.我应该创建聚簇索引还是非聚簇索引?

是的,您应该在 ID 列上定义一个主键聚簇索引。

是的,您应该在 (User1, User2, Date) 上定义一个非聚集复合索引。如果您将 ID 定义为聚簇索引,则 ID 已经在非聚簇索引中 "included"。