Optimera Microsoft Access när du använder ODBC-datakällor

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Avancerat: Kräver expertkodning, interoperabilitet och fleranvändarfärdigheter.

Den här artikeln gäller endast för Microsoft Access-databaser (.mdb eller .accdb).

Sammanfattning

I den här artikeln beskrivs flera tips för bättre prestanda när du öppnar data från en ODBC-datakälla.

Mer information

Använd följande tips för att förbättra prestanda med ODBC-datakällor:

  • Begränsa mängden data som du begär från servern. Be inte om mer data än vad du behöver. Använd frågor för att välja endast de fält och rader som du behöver.

  • Använd endast de funktioner som du behöver. Ögonblicksbilder är mindre kraftfulla än dynaster och kan inte uppdateras. Ögonblicksbilder kan dock vara snabbare, särskilt för små postuppsättningar utan Memo- eller OLE-objektfält.

  • Skapa länkade (bifogade) tabeller för åtkomst till serverdata. Undvik "direkt" serveråtkomst (det vill säga öppna inte fjärrdatabaser och kör frågor mot dem). Skapa i stället bifogade tabeller eller skapa direktfrågor.

  • Utforma listrutor och kombinationsrutor klokt. Varje listruta, kombinationsruta, underformulär och kontroll som innehåller en summa kräver en separat fråga. Mot lokala data kan prestanda vara tillräcklig. Mot fjärrdata kan emellertid långa fördröjningar uppstå när du öppnar ett formulär eftersom varje fråga måste skickas till servern och ett svar måste returneras innan formuläret kan öppnas.

  • Undvik stora kombinationsrutor. Om du tar med en kombinationsruta med hundratals eller till och med tusentals alternativ som baseras på en lokal tabell kan det ge en godtagbar svarstid, särskilt om du definierar ett lämpligt index för den lokala tabellen. Mot en fjärrtabell ger en kombinationsruta ändå prestanda eftersom den tömmer server- och nätverksresurser när den hämtar data som ska fyllas i listan. Det är bäst att begränsa antalet rader som returneras till kombinationsrutan när du arbetar med fjärrdata. Du kan också dela upp informationen i mindre kombinationsrutor (med ovanstående tips i åtanke).

  • Använd kommandot Sök endast på mindre postuppsättningar. Databasmotorn Microsoft Jet optimerar kommandot Sök så att det fungerar bra mot lokala postuppsättningar av nästan alla storlekar och mot fjärrpostermängder av rimlig storlek. Men när du har stora fjärrpostermängder (tusentals poster eller fler) bör du i stället skapa ett filter eller en fråga och även vara försiktig med att använda begränsningar som servern kan bearbeta.

  • Se till att frågor skickas till servern för bearbetning. Den viktigaste faktorn i frågeprestanda mot fjärrdata är att säkerställa att servern kör så mycket av frågan som möjligt. Microsoft Jet-databasmotorn försöker skicka hela frågan till servern, men utvärderar lokalt alla frågesatser och uttryck som inte stöds allmänt av servrar eller av din specifika server. Funktioner som inte stöds av servrar i allmänhet omfattar följande:

  • Åtgärder som inte kan uttryckas i ett enda SQL-uttryck. Det här kan inträffa när du använder en fråga som indata till en annan fråga, eller när frågans FROM-sats innehåller en summafråga eller DISTINCT-fråga. Ofta kan du ordna om dina frågor för att beräkna summor efter alla andra åtgärder.

    • Åtgärder som är Microsoft Jet-databasmotorns specifika tillägg till SQL, till exempel korsfrågor, TOP-frågor och rapporter med flera grupperings- och summanivåer. Observera att enkla korsfrågor kan skickas till servrar.
    • Uttryck som innehåller Microsoft Access-specifika operatorer eller funktioner. Finansiella funktioner och statistiska aggregerade Microsoft Access har inga serverekvivalenter.
    • Användardefinierade Visual Basic for Application-funktioner som tar fjärrkolumner som argument. De här funktionerna finns inte på servern men måste bearbeta data i fjärrkolumner. Om en användardefinierad funktion returnerar ett enda värde och inte refererar till en fjärrkolumn, beräknas funktionen lokalt och dess värde skickas till servern för bearbetning.
    • Blanda text- och numeriska datatyper i operatorer eller UNION-frågeresultat. De flesta servrar saknar microsoft Access datatyp. Därför bör du i lämpliga fall använda explicita konverteringsfunktioner.
    • Heterala kopplingar mellan lokala tabeller och fjärrtabeller, eller mellan fjärrtabeller i olika ODBC-datakällor. Kopplingar mellan små lokala tabeller och stora fjärrtabeller, där kopplingskolumnen är indexerad, kan resultera i en fjärrindexkoppling. I en fjärrindexkoppling skickas en fråga för varje rad i den lokala tabellen till servern och endast kopplingsraderna returneras.
    • Uttryck som inte kan skickas via fjärrstyrning, eftersom de inte kan utvärderas av servern. Icke-fjärrbara utdatauttryck (de i SELECT-satsen) tvingar inte till lokal utvärdering av frågan, såvida de inte förekommer i en summeringsfråga, en DISTINCT-fråga eller en UNION-fråga. Uttryck som inte kan fjärrstyras i andra satser (WHERE, ORDER BY, GROUP BY, HAVING och så vidare) tvingar minst en del av frågan att utvärderas lokalt.
  • Servrarna är olika inom vissa områden med funktioner som stöds. När du bifogar en fjärrtabell frågar Microsoft Jet-databasmotorn ODBC-drivrutinen efter dess funktioner. Om drivrutinen och servern stöder de nödvändiga funktionerna skickar Microsoft Jet-databasmotorn åtgärden till servern för bearbetning. Om inte så utför Microsoft Jet-databasmotorn åtgärden lokalt. Olika områden med olika stöd omfattar (men är inte begränsade till) följande:

    • Yttre kopplingar. Observera att Microsoft Jet-databasmotorn inte skickar flera yttre kopplingar till en server, även om många inre kopplingar kan följa med en enda yttre koppling.
    • Numeriska funktioner, sträng- och datum-/tidsfunktioner – t.ex. Logg(), Mitt$(), DatumDel() och så vidare.
    • Konverteringsfunktioner – t.ex. KonvInt(), KonvStr(), KonvVDatum() och så vidare.