我在MS Azure SQL DB上有一个具有60,000行的表,开始使用SELECT语句执行将花费更长的时间。第一列是“ ID”列,它是主键。截至目前,没有其他索引。关于此表的问题是,这些行是基于最近的新闻报道的,因此,与较旧的行相比,该表中的最后一行将总是被访问更多。
如果可能的话,当我执行SELECT操作时,如何告诉SQL Server在表的末尾开始向后查询?
另外,如何处理索引以使以最后一行为优先级的表读取速度更快?
最佳答案
通常,SQL Server查询优化器将根据可用索引,数据分布统计信息和查询来选择数据访问策略。例如,SQL Server可以向前,向后,物理顺序等扫描索引。该选择是基于许多变量确定的。
在您的示例中,如果表中有日期/时间列,则可以在谓词中建立索引并使用它。如果该索引是最有选择性的索引,它将自动启用该索引。
或者,您可以基于列对表进行分区,并根据分区键访问最新数据。这是滚动窗口分区的常用用法。使用这种方法,查询中的谓词将指定“分区”列,这将帮助优化程序选择要扫描的正确分区集合。由于将根据查询计划在执行之前消除分区,因此这将大大减少需要搜索的数据量。