I'm using the DDS REST API to perform a search for all available equity options. I'm expecting close too 200k rows in the response. The result is paginated and the issue I'm seeing is that the further I get along with fetching pages, the slower the response gets. e.g. fetching page 1 takes around 16 seconds, wheras fetching page 320 takes 53 seconds. The attached graph shows the slow down compared to ideal linear scaling.
At this rate it looks like I won't be able to fetch the result in a reasonable amount of time.
is there a better way of approaching a queary like this one?
Although it's not ideal, this behavior is expected. The paging capability for searches has not been fully implemented which is the reason for the performance degradation. The best practice, until we fully support paging for searches, is to specify the page size (i.e. 200K) for your search requests. See the Key Mechanisms Server Driven Paging documentation section "Preferences". The "Retrieving all pages" example shows how to set this in the .Net SDK. Please be sure to only set this for the search and reset after the request is complete or create a new context (if using the .Net SDK).