Я думаю, что это самый быстрый способ сделать это. Я запустил приведенный ниже код, чтобы проверить ваш путь, и единственный другой способ, которым я мог придумать, и ваш путь был немного быстрее. Я также хотел бы упомянуть в таблице с 1 000 000 строк, что время отклика было достаточно быстрым, чтобы SSMS даже не давала мне время выполнения, только 00:00:00. Я видел одну вещь, которая может вам помочь. Если вы можете, поместите некластеризованный индекс в столбец «Создано» и сделайте его сортировку в порядке убывания. Поместите его в порядке убывания будет иметь большое значение, потому что он остановит вас от сканирования таблицы для новейшего Created DateTime. Это действительно может иметь огромное значение.
--Put Rows in TestTable, 3 Rows ID, User_ID, CreatedTime
DECLARE @Count INT
SET @Count = 1
WHILE @Count <= 1000000
BEGIN
INSERT INTO TestTable
VALUES (@Count%3+1,DATEADD(HH,@Count,getdate()))
SET @Count = @Count + 1
END
--Select Your way
SELECT TOP 1
User_ID
FROM TestTable
WHERE User_ID = 3
ORDER BY CreatedTime DESC
--Select my way
SELECT
User_ID
FROM TestTable
WHERE User_ID = 3
and CreatedTime = (SELECT MAX(CreatedTime) FROM TestTable WHERE User_ID = 3)