我在 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/