MS SQL select top 1 тормозит
От: elmal  
Дата: 13.08.19 07:28
Оценка:
Не пойму что за хрень и как это лучше пофиксить.

Есть запрос:
select 
top 1
    asuUUID, skuUUID, timestamp, volume, recorddate
from
    stock
where
    tankUUID = ?
order by timestamp desc


Так вот, эта хрень тормозит более минуты, когда where фильтрует все записи. При этом если я поставлю top 14 и более, выполняется мгновенно. Индексы на tankUUID и timestamp есть.

Вопрос как эту хрень пофиксить наиболее универсально и просто, ну и понадежнее? Нагуглил через with index, да, работает, но это специфичная для ms sql инструкция, у меня тогда могут отвалиться другие базы. Я даже могу топ 14 (а то и 100) и брать программно первый элемент, это будет достаточно шустро работать, это не узкое место (когда не выполняется по 100 секунд естественно, даже секунда вполне приемлемо). Но где гарантии что на каких то данных там опять такая хрень не всплывет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.