SharePoint Boss

Benvenuti nel mio blog
posts - 13, comments - 589, trackbacks - 3

Tuesday, December 13, 2011

SPQuery: count items

Per recuperare il numero degli items di una lists per una determinata Query, eventualmente creata a run time, la sintassi base che uno scriverebbe è la seguente:

int ItemCount;

SPQuery query = new SPQuery();

query.Query = view.Query;

ItemCount = list.GetItems(query).Count;

da questo snippet ho omesso il RowLimit perchè altrimenti non avrei una Count valida, supponendo di creare un paginatore.

Ma qui ho riscontrato un enorme problema, i tempi di risposta, perchè il GetItems anche se alla fine richiediamo il Count comunque restituisce tutti gli items e poi ritorna il totale, ho notato che già con 3000 items i tempi di attesa si aggirano sui 10/14 secondi (un botto!!!).

La soluzione è banalissima, comunque siamo costretti a fare il GetItems, ma considerato che abbiamo necessità solo di una Count cerchiamo di minimizzare il tutto e quindi nella mia query specificherò che i ViewFields dovranno essere solamente 1 cioè l'ID (numerico), quindi insieme allo snippet di prima aggiungeremo anche:

1 query.ViewFields = "<FieldRef Name='ID' />";

Kid's stuff

posted @ Tuesday, December 13, 2011 5:47 PM | Feedback (92) |

Powered by:
Powered By Subtext Powered By ASP.NET