Výkon zobrazení dat

Toto téma popisuje výhody výkonu při používání Find a FindRows metod DataView třídy a ukládání do mezipaměti DataView ve webové aplikaci.

Najít a najítrows

DataView vytvoří index. Index obsahuje klíče vytvořené z jednoho nebo více sloupců v tabulce nebo zobrazení. Tyto klíče jsou uložené ve struktuře, která umožňuje DataView rychle a efektivně najít řádek nebo řádky přidružené k hodnotám klíče. Operace, které používají index, jako je filtrování a řazení, zobrazují významné zvýšení výkonu. Index pro objekt se DataView sestaví při DataView vytvoření i při úpravě některého z informací o řazení nebo filtrování. DataView Vytvoření a následné nastavení informací o řazení nebo filtrování později způsobí, že se index sestaví alespoň dvakrát: jednou po DataView vytvoření a znovu při úpravě některé vlastnosti řazení nebo filtru. Další informace o filtrování a řazení pomocí DataView, naleznete v tématu Filtrování pomocí DataView a řazení pomocí DataView.

Pokud chcete vrátit výsledky konkrétního dotazu na data, na rozdíl od poskytnutí dynamického zobrazení podmnožinu dat, můžete místo nastavení RowFilter vlastnosti použít Find metody nebo FindRows metodyDataView. Vlastnost RowFilter se nejlépe používá v aplikaci vázané na data, kde vázaný ovládací prvek zobrazuje filtrované výsledky. RowFilter Nastavení vlastnosti znovu sestaví index dat, přidá režii vaší aplikace a sníží výkon. Tyto Find metody FindRows používají aktuální index bez nutnosti znovu vytvořit index. Pokud budete volat Find nebo FindRows jen jednou, měli byste použít stávající DataView. Pokud budete volat Find nebo FindRows vícekrát, měli byste vytvořit nový DataView , který znovu sestaví index ve sloupci, který chcete vyhledat, a potom volat Find nebo FindRows metody. Další informace o metodách Find a FindRows řádcích naleznete v tématu Hledání řádků.

Následující příklad používá metodu Find k vyhledání kontaktu s příjmením "Zhu".

DataTable contacts = _dataSet.Tables["Contact"];

EnumerableRowCollection<DataRow> query = from contact in contacts.AsEnumerable()
                                         orderby contact.Field<string>("LastName")
                                         select contact;

DataView view = query.AsDataView();

// Find a contact with the last name of Zhu.
var found = view.Find("Zhu");
Dim contacts As DataTable = dataSet.Tables("Contact")

Dim query = _
    From contact In contacts.AsEnumerable() _
    Order By contact.Field(Of String)("LastName") _
    Select contact

Dim view As DataView = query.AsDataView()

Dim found As Integer = view.Find("Zhu")

Následující příklad používá metodu FindRows k vyhledání všech červených barevných produktů.

DataTable products = _dataSet.Tables["Product"];

EnumerableRowCollection<DataRow> query = from product in products.AsEnumerable()
                                         orderby product.Field<decimal>("ListPrice"), product.Field<string>("Color")
                                         select product;

DataView view = query.AsDataView();

view.Sort = "Color";

var criteria = new object[] { "Red" };

DataRowView[] foundRowsView = view.FindRows(criteria);
Dim products As DataTable = dataSet.Tables("Product")

Dim query = _
From product In products.AsEnumerable() _
Order By product.Field(Of Decimal)("ListPrice"), product.Field(Of String)("Color") _
Select product

Dim view As DataView = query.AsDataView()
view.Sort = "Color"

Dim criteria As Object() = New Object() {"Red"}

Dim foundRowsView As DataRowView() = view.FindRows(criteria)

ASP.NET

ASP.NET má mechanismus ukládání do mezipaměti, který umožňuje ukládat objekty, které k vytvoření do paměti vyžadují rozsáhlé prostředky serveru. Ukládání do mezipaměti tyto typy prostředků mohou výrazně zlepšit výkon vaší aplikace. Ukládání do mezipaměti je implementována Cache třídou, s instancemi mezipaměti, které jsou soukromé pro každou aplikaci. Vzhledem k tomu, že vytvoření nového DataView objektu může být náročné na prostředky, můžete tuto funkci ukládání do mezipaměti použít ve webových aplikacích, aby DataView se nemusela znovu vytvářet při každé aktualizaci webové stránky.

V následujícím příkladu se uloží DataView do mezipaměti, aby se data při aktualizaci stránky nemusela znovu řadit.

If (Cache("ordersView") = Nothing) Then  
  
Dim dataSet As New DataSet()  
  
   FillDataSet(dataSet)  
  
   Dim orders As DataTable = dataSet.Tables("SalesOrderHeader")  
  
   Dim query = _  
                    From order In orders.AsEnumerable() _  
                    Where order.Field(Of Boolean)("OnlineOrderFlag") = True _  
                    Order By order.Field(Of Decimal)("TotalDue") _  
                    Select order  
  
   Dim view As DataView = query.AsDataView()  
  
   Cache.Insert("ordersView", view)  
  
End If  
  
Dim ordersView = CType(Cache("ordersView"), DataView)  
  
GridView1.DataSource = ordersView  
GridView1.DataBind()  
if (Cache["ordersView"] == null)  
{  
   // Fill the DataSet.
   DataSet dataSet = FillDataSet();  
  
   DataTable orders = dataSet.Tables["SalesOrderHeader"];  
  
   EnumerableRowCollection<DataRow> query =  
                        from order in orders.AsEnumerable()  
                        where order.Field<bool>("OnlineOrderFlag") == true  
                        orderby order.Field<decimal>("TotalDue")  
                        select order;  
  
   DataView view = query.AsDataView();  
   Cache.Insert("ordersView", view);  
}  
  
DataView ordersView = (DataView)Cache["ordersView"];  
  
GridView1.DataSource = ordersView;  
GridView1.DataBind();  

Viz také