优化聊天应用数据库
Optimizing chat application database
我使用数据库开发一个简单的聊天应用程序。项目的数据库如图所示。
邮件中的方向栏table只是判断user1是发件人还是user2是发件人。
我使用此查询来获取消息:
SELECT TextContent,Direction FROM Messages
WHERE User1 = 1 AND User2 = 2
ORDER BY Date
User1 和 User2 的值只是为了说明。
我有两个问题:
我没有为消息选择主键 table。我应该简单地选择 ID 列作为主键还是 select 多个列作为主键?
我应该在 (User1,User2,
Date) 列或 (User1,User2,ID) 列 ?.我应该创建聚簇索引还是非聚簇索引?
是的,您应该在 ID 列上定义一个主键聚簇索引。
是的,您应该在 (User1, User2, Date) 上定义一个非聚集复合索引。如果您将 ID 定义为聚簇索引,则 ID 已经在非聚簇索引中 "included"。
我使用数据库开发一个简单的聊天应用程序。项目的数据库如图所示。
邮件中的方向栏table只是判断user1是发件人还是user2是发件人。
我使用此查询来获取消息:
SELECT TextContent,Direction FROM Messages
WHERE User1 = 1 AND User2 = 2
ORDER BY Date
User1 和 User2 的值只是为了说明。
我有两个问题:
我没有为消息选择主键 table。我应该简单地选择 ID 列作为主键还是 select 多个列作为主键?
我应该在 (User1,User2, Date) 列或 (User1,User2,ID) 列 ?.我应该创建聚簇索引还是非聚簇索引?
是的,您应该在 ID 列上定义一个主键聚簇索引。
是的,您应该在 (User1, User2, Date) 上定义一个非聚集复合索引。如果您将 ID 定义为聚簇索引,则 ID 已经在非聚簇索引中 "included"。