gpt4 book ai didi

sql-server - 您将如何优化此 SQL Server 2008 R2 表

转载 作者:行者123 更新时间:2023-12-03 05:00:34 25 4
gpt4 key购买 nike

我的浏览器游戏有一个私有(private)消息系统。当我使用查询检查大多数 CPU 时间时,我发现该表是 CPU 使用率最高的表。我不擅长索引、查询时间优化。所以我想了解一下您关于这张表的优化技巧。

好吧,现在我将首先向您展示表结构:

结构图像

enter image description here

好吧,下面的查询读取用户有多少条未读消息,并且该查询是 CPU 使用率最高的查询,因为它在每次页面加载时都会读取:

SELECT COUNT([Id]) [Number] 
FROM [MyTable]
WHERE [ReceiverUserId] = @1
AND [ReceiverReaded] = @2
AND [ReceiverDeleted] = @3

那么什么样的索引等可以提高我的性能?

最佳答案

为什么在这些列上允许 NULL——无论它是否被读取。默认为 0。然后在 Read/Deleted/ReceivedUser 上建立索引(如果您需要大量 ALL READ 访问,则按照该顺序,它们将被“分区”,或者,如果大多数读取仅针对单个用户,则在 ReceivedUser 上建立索引)

您想要做的是看到您的索引被覆盖。在您的情况下,您可以在 ReceiverUserId 上放置一个索引,并包含 ReceiverReaded 和 ReceiverDeleted 列,它将覆盖(对于该查询)。在执行计划中,您应该只看到索引查找,因为您只有一个用户。

您可以捕获工作负载,然后通过 SQL Server 中的索引调整向导运行它,它可能会提出非常好的建议。当然,您需要解释它告诉您的内容。

关于sql-server - 您将如何优化此 SQL Server 2008 R2 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com