SharePoint Asked on January 2, 2022
I have an application I built in SharePoint Online which uses REST API queries to pull records out of a SharePoint list which has 400k records. The list has an indexed column and for the most part the values returned in the index column never exceed 5k. The front end has a drop down with the values available in the indexed field. Upon selecting a value the results are returned. This works great.
The issue I’m seeing is that it is possible that occasionally one of the indexed values will exceed the 5k limit which breaks the query if you are querying on that value. My initial thought was that if I go back into the data and reduce the count to below 5k on that index that the application would then allow me to query on that value again.
In my test case, I exceeded the 5k limit on one of the indexed values, breaking the application when I query on that value. I then removed all of the records for that indexed value in the source list, but the application still throws the SPQueryThrottleException error even though no records for that index exist. Is there a way around this? Will that indexed value be broken forever once it’s exceeded?
If I had ran into such an issue on SharePoint on-prem, the first thing to try would be to CA > Manage Web application > General Settings in Top ribbon > Resource throttling > Increase the value from 5K to 20K for general audience. Not sure if it works the same way with SPOnline.
Also, in general, if the query is breaking because it is expected to return more than 5K items, I would explicitly code the query to never return more than 5K items. And then, there is always the chance of implementing some variety of paging in the application or maybe running a follow-up query to get the rest of items!
Answered by Nisarg on January 2, 2022
Get help from others!