SharePoint päringute jõudlus 3: Küsi nii palju üksusi kui vajad

24.03.2010  |  Gunnar

Keeruline jutt SharePoint On päringuid, mille tagastatud tulemuste hulgast me kõiki tulemusi ei vaja. Tagastatavat tulemuste hulka on oluline silmas pidada, sest muidu võib tekkida olukord, kus andmebaasist küsitakse andmeid oluliselt rohkem kui meil vaja on. See tähendab jällegi protsessori ja mälu suuremat kasutust. Käesolev postitus aitab piirata ära tagastatavate üksuste arvu.

Küllaltki tihti leiab SharePoint rakendustest sellist koodi.

private void Bind()
{
    var list = SPContext.Current.CurrentWeb.Lists["Projects"];
    var query = new SPQuery();
    query.Query = "<where><eq>";
    query.Query +="<fieldref Name='Company' LookupId='True' />";
    query.Query += "<value Type='Lookup'>12</value></eq></where>";

    var items = list.GetItems(query);

    // tee tulemustega midagi sisukat
}

Päring küsib loendist oluliselt rohkem üksusi kui tal tegelikult vaja läheb. Näiteks 1000 üksust tagastav päring toob meile antud juhul kohale 900 üksust rohkem kui meil vaja läheb. Lahenduseks on SPQuery klassi RowLimit omadus, mis määrab päringuga tagastatavate üksuste arvu. Järgnevas näites piisab näiteks projektide listi kuvamiseks kümnest üksusest.

private void Bind()
{
    var list = SPContext.Current.CurrentWeb.Lists["Projects"];
    var query = new SPQuery();
    query.Query = "<where><eq>";
    query.Query +="<fieldref Name='Company' LookupId='True' />";
    query.Query += "<value Type='Lookup'>12</value></eq></where>";

    query.RowLimit = 10;

    var items = list.GetItems(query);

    // tee tulemustega midagi sisukat
}

Peale seda täiendust elab me kood oluliselt paremini ja serveriski peaks varasemast rahulikumaks minema.

Üks kommentaar sissekandele “SharePoint päringute jõudlus 3: Küsi nii palju üksusi kui vajad”

  1. Gunnar

    Lisan siia täpsustuseks nii palju, et RowLimit on mõttekas alati päringule lisada. Ühelt poolt pidi see meeldima SQL Serverile ja teisalt aitab see vältida olukorda, kus päringu mälupuhver saab liiga suur.

Kommenteeri

sulge
Saada link e-postiga

© DT 2012 | Creative Commons Attribution-Noncommercial 3.0 License | WordPress