MAX (даты) медленно возвращаются в Sybase ASE - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть вопрос о макс (даты) в Sybase ASE. Я работаю с таблицей, в которой миллионы строк, но на данный момент я ищу только самую последнюю дату, когда товар был продан.

Если я запусту это:

select * 
from DailySales.dbo.DailySales   
where ItemID = 558

Я получу 60 записей за 190 мс, с последней датой чуть более трех лет go, но если я запущу:

select max(SalesDate) 
from DailySales.dbo.DailySales   
where ItemID = 558

Работает очень долго (я остановился на 4 минуте). Новые даты возвращаются мгновенно.

Что здесь происходит?

Я приложил изображение индексов:

enter image description here

1 Ответ

0 голосов
/ 02 апреля 2020

Для этого конкретного запроса вам нужно искать на ItemID и ходить (хотя бы на один шаг) на SalesDate. С учетом этого индекс будет:

create index ix1 on DailySales.dbo.DailySales (ItemID, SalesDate)

Попробуйте выполнить запрос после создания этого индекса.

...