提高 SQL Server 中最新记录的选择和插入性能

Posted

技术标签:

【中文标题】提高 SQL Server 中最新记录的选择和插入性能【英文标题】:Improving the performance of selects and inserts of latest records in SQL Server 【发布时间】:2021-02-05 19:09:28 【问题描述】:

我有一个表,其中有一个名为BatchId 的列。当要插入的 batchId 是新的并且要选择的是最新的时,我想确保该表上的 select 和 insert 非常快。

Select * 
from table 
where batchId = @maximumBatchId

我不关心其他batchIds的性能。

batchId 上添加索引确实提高了性能,但随着索引大小的增加,它可能会有所不同。

【问题讨论】:

如果你正在寻找,那么大小不应该对性能产生任何重大影响(更重要的是寻找扫描了多少行,执行了多少查找等)。 【参考方案1】:

你可以使用:

select top (1) t.*
from t
order by batchid desc;

为了提高性能,您需要在(batchid desc) 上建立索引。

如果多行可以有相同的batchid,则使用:

select top (1) with ties t.*

【讨论】:

我也想知道 desc index 是否可以解决问题,但不确定因为找不到任何文章。 @Deepak 在大多数情况下,索引可用于开始或结束(例如,它可以从任一端开始并沿任一方向扫描)。一些信息here

以上是关于提高 SQL Server 中最新记录的选择和插入性能的主要内容,如果未能解决你的问题,请参考以下文章

Excel-VBA 访问 sql server 表进行选择和插入太慢

SQL Server:如果在选择中的函数的表中找不到,则插入记录

检测重叠日期并更新最新记录SQL Server 2008

SQL Server 视图插入更新

SQL Server:从最大日期/最新日期的记录中获取数据

sql server返回插入记录的ID(多条记录)