sql-server - 优化 Azure SQL Server 中最新/最后一行的表

标签 sql-server azure indexing query-optimization azure-sql-database

我在 MS Azure SQL DB 上有一个包含 60,000 行的表,使用 SELECT 语句执行该表开始需要更长的时间。第一列是“ID”列,它是主键。截至目前,没有其他索引。该表的问题是,这些行基于最近的新闻文章,因此表中最后一行的访问量总是比旧行多。

如果可能的话,当我执行 SELECT 操作时,如何告诉 SQL Server 从表末尾开始向后查询?

此外,我可以如何使用索引来加快从表中读取数据的速度(以最后一行为优先级)?

最佳答案

通常,SQL Server查询优化器会根据可用索引、数据分布统计和查询来选择数据访问策略。例如,SQL Server 可以向前、向后、物理顺序等扫描索引。选择是根据许多变量来确定的。

在您的示例中,如果表中有日期/时间列,那么您可以在谓词中索引并使用它。如果该索引是最具选择性的索引,这将自动启用该索引的使用。

或者,您可以根据列对表进行分区,并根据分区键访问最新数据。这是滚动窗口分区的常见用法。通过这种方法,查询中的谓词将指定分区列,这将帮助优化器选择要扫描的正确分区集。这将大大减少需要搜索的数据量,因为根据查询计划,分区消除发生在执行之前。

关于sql-server - 优化 Azure SQL Server 中最新/最后一行的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30992319/

相关文章:

sql - 对 varbinary 数据类型 sql server 执行聚合操作

json - SQL Server JSON_VALUE 语法

azure - Microsoft Azure OAUTH2.0 - 多个源客户端如何调用 Azure OAUTH2.0 身份验证

mysql:为自动增量字段设置唯一索引

web-applications - 忽略应用程序 URL 的 webapps 中的文件夹名称

sql - 具有时间有效性的 Oracle 表的主键违规

sql-server - 创建触发器时无法绑定(bind)多部分标识符 "inserted.Id"

c# - 为什么 SqlParameter 名称/值构造函数将 0 视为 null?

c# - 具有自托管代理的 Azure DevOps Pipeline 无法运行任务

各种订阅中的服务主体可以访问 Azure Keyvault