Informace o výkonu dotazů v databázi aplikace Access

Překlady článku Překlady článku
ID článku: 209126 - Produkty, které se vztahují k tomuto článku.
Střední: Vyžaduje základní maker, kódování a interoperability dovednosti.

Tento článek se týká pouze databáze aplikace Microsoft Access (MDB).

Aplikace Access 97 verzi tohoto článku v tématu 112112.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

ÚVOD

Tento článek popisuje, jak optimalizovat výkon dotazu v aplikaci Microsoft Access 2000, Microsoft Access 2002 a Microsoft Office Access 2003. Jsou zahrnuty v následujících tématech:
  • Optimalizace dotazu pro databázový stroj Microsoft Jet
  • Dotaz časování
  • Analýza výkonu
  • Tipy ke zlepšení výkonu dotazu
Tento článek předpokládá, že databáze obsahuje místní tabulky namísto tabulek propojených (nebo připojené). Pokud jsou tabulky propojeny, tyto informace se stále platí. Existují však další problémy, které ovlivňují dotazu výkon s propojenými tabulkami. Další informace o vylepšení výkonu pomocí propojených tabulek můžete vyhledávat ve znalostní bázi Microsoft Knowledge Base pomocí následující řetězec:
ODBC a optimalizace a tabulek

Další informace

Optimalizace dotazu pro databázový stroj Microsoft Jet

Databázový stroj Jet 4.0 obsahuje několik součástí, ale nejdůležitější součásti dotazů (a nejsložitější) je optimalizace. Optimalizace je nákladů založený na. To znamená, že optimalizace přiřadí každému úkolu dotazu náklady čas a potom vybere nejlevnější seznam úkoly prováděné, které generuje sadu výsledků určené. Čím déle trvá úkolu provádět tím dražší je tento úkol.

Rozhodnou co strategie dotazu použít, používá optimalizace statistiky. Následující faktory jsou uvedeny některé faktory, které tyto statistické údaje jsou založeny na:
  • Počet záznamů v tabulce
  • Počet stránek dat v tabulce
  • Umístění tabulky
  • Určuje, zda jsou k dispozici indexy
  • Jak jedinečné indexy jsou
Na základě těchto statistik, optimalizace pak vybere nejlepší vnitřní dotaz strategie pro vyřizování konkrétní dotaz.

Statistické údaje aktualizovány při každém dotazu je zkompilován. Dotaz je označena příznakem pro sestavování dotazu (nebo její podkladové tabulky) a při databáze se zkomprimuje uložíte všechny změny. V případě dotazu je označena pro sestavování, dojde k sestavování a aktualizaci statistiky při příštím spuštění dotazu. Kompilace obvykle trvá ze sekundu jedno až čtyři sekundy.

Přidáte-li významný počet záznamů v databázi, otevřete a uložte vaše dotazy znovu zkompilujte dotazů. Například pokud návrhu a otestujte dotaz pomocí malou sadu ukázkových dat, je musí re-compile dotaz po další záznamy jsou přidány do databáze. Pokud tak učiníte, budete chtít ujistěte se, že dotazu optimální výkon je splněný, pokud aplikace je používán.

Poznámka: Nelze se zobrazení schémata optimalizace motoru databáze Jet a optimalizace dotazu nelze zadat. Dokumentace můžete však určete, zda indexy existují a jak jedinečný index.

Další informace o problému, které mohou nastat při používat nástroj dokumentace v aplikaci Access 2000 získáte následujícím článku báze Microsoft Knowledge Base:
207782ACC2000: Chyba pomocí databáze dokumentace, pokud jsou otevřeny objekty

Dotaz časování

Existují dva významné časových měření pro výběrový dotaz:
  • Zobrazí první obrazovku s daty
  • Čas k získání poslední záznam
Pokud dotaz vrátí pouze jednu obrazovku s daty, tyto dva čas měření jsou stejné. Pokud dotaz vrátí více záznamů, může být velmi odlišné těchto měření času.

Pokud se dvě měření jsou stejné při zobrazení výběrový dotaz v zobrazení datového listu, se zobrazí na obrazovce, dat a celkový počet záznamů, které jsou vráceny v dotazu, například "Záznamu 1 N." Pokud databázového stroje Jet k zobrazení na první obrazovce než dokončení dotazu a potom načíst poslední záznam dat je rychlejší, zobrazí se obrazovka dat, ale žádný N "Záznamu 1 N. Hodnota N je prázdné, až do dokončení dotazu nebo do doby, než jste posuňte zobrazení dolů k poslední záznam.

Toto chování je v důsledku databázový stroj Jet, zvolením jedné ze dvou strategií výkonu:
  • Dokončete dotaz a zobrazte data
  • Zobrazení dat a potom dokončete dotazu
Nelze řídit strategii, která se používá. Databázový stroj Jet vybere strategii, která je nejefektivnější.

Analýza výkonu

Pokud používáte Microsoft Access 7.0, aplikace Access 97, Access 2000, Access 2002 nebo Access 2003, můžete použít Průvodce analýzou výkonu k analýze dotazů v databázi. Protože analýzy výkonu dotazu je úzce svázán s databázový stroj Jet, navrhne Průvodce analýzou výkonu přidání indexy pouze v případě indexy budou skutečně být databázovým strojem Jet optimalizace dotazu. To znamená, že Průvodce analýzou výkonu může poskytnout výkonu tipy, více specifické pro databáze než obecná doporučení uvedených níže v části "Tipy ke zlepšení výkonu dotazu".

Chcete-li spustit Průvodce analýzou výkonu v aplikaci Access 7.0, v aplikaci Access 97, v aplikaci Access 2000, v aplikaci Access 2002 nebo v aplikaci Access 2003, postupujte takto:

V nabídce Nástroje klepněte analyzovat a potom klepněte na položku výkon.

Tipy ke zlepšení výkonu dotazu

Chcete-li zlepšit výkon dotazu, vyzkoušejte následující tipy:
  • Komprimace databáze

    Při komprimaci databáze můžete urychlit dotazy. Při komprimaci databáze záznamy v tabulce jsou změně uspořádání takže záznamy umístěny na sousedících stránkách databáze, jsou uspořádány podle primárního klíče tabulky. To zvyšuje výkon sekvenčním prohledávání záznamů v tabulce, protože pouze minimální počet stránek databáze nyní nutné načíst záznamy, které chcete číst. Po kompresi databáze spusťte všechny dotazy k sestavení dotazu tak, aby každý dotaz bude nyní podle aktualizované statistiky tabulek.
  • Index pole

    Index jakékoli pole, které slouží k nastavení kritérií pro pole dotazu a pole indexu na obou stranách spojení. Nebo vytvořit vztah mezi tato pole. Vytvořit vztah s vynucené referenční integrity, databázový stroj Jet vytvoří index pro cizí klíč, pokud jeden již neexistuje. V opačném případě databázový stroj Jet používá existující index.

    Poznámka: Databázový stroj Jet automaticky optimalizuje dotaz, který spojuje tabulky aplikace Access na pevném disku serveru tabulce ODBC-li databáze tabulky je malý a pokud jsou spojená pole jsou indexovány. Aplikace Access v tomto případě zlepšuje výkon požadovat pouze požadované záznamy ze serveru. Ujistěte se, že tabulky připojíte z různých zdrojů jsou indexovány na polích spojení.
  • Vyberte nejmenší typ dat, je vhodné

    Při definování pole v tabulce, vyberte nejmenší typ dat, která je vhodná pro data v poli. Dále se ujistěte, že pole, které chcete použít ve spojení mají stejné typy dat nebo kompatibilní datových typů, například číslování a číslo (Pokud je vlastnost Velikost pole nastavena na hodnotu Dlouhé celé číslo).
  • Přidejte pouze ta pole, které je nutné mít

    Pokud vytvoříte dotaz, přidejte pouze ta pole, které jsou nutné. V polích, která slouží k nastavení kritérií klepnutím zrušíte zaškrtnutí políčka Zobrazit-li zobrazit tato pole zaškrtnutí.
  • Uložení příkazu SQL jako dotaz

    Pokud příkaz SQL je nastaven na vlastnost zdroj záznamů pro formulář nebo sestavu, uložení příkazu SQL jako dotaz a poté nastavte vlastnost RecordSource na název dotazu.
  • Nepoužívejte vypočítaná pole

    Nepoužívejte vypočítaná pole v poddotazů. Pokud přidáte dotaz, který obsahuje vypočítaným polem do jiného dotazu, výraz ve vypočítaném poli může zpomalit výkon nadřazeného dotazu. V následujícím příkladu dotazu Q1 slouží jako vstup pro dotaz čtvrtletí:
    Otázka č. 1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM MojeTabulka;
    Q2: SELECT * FROM Q1 WHERE X = "Objednávka potvrzena";
    Protože nelze optimalizovat IIF výraz v Q1, Q2 také nelze optimalizovat. Pokud je výraz, který nemůže být optimalizován vnořené v poddotazu, nelze optimalizovat dotazu.

    Alternativní způsob vytvoření dotazu je následující:
    Otázka č. 1: SELECT * FROM MojeTabulka WHERE poli MůjSloupec = "Ano";
    Pokud ve výstupu výrazy vyžadováno, pokuste se výrazy do ovládacího prvku formuláře nebo sestavy. Můžete například změnit předchozí dotaz na parametrický dotaz vyzve k zadání hodnoty v poli MůjSloupec a založit formulář nebo sestavu na dotazu. Na formuláři nebo sestavě můžete přidat vypočítaný ovládací prvek, který v závislosti na hodnotu, která je v poli MůjSloupec zobrazí "Ahoj" nebo "Rozloučení".

    Sestavit dotaz takto:
    PARAMETRY [Chcete-li zobrazit potvrzené objednávky, zadejte hodnotu Ano. Chcete-li si prohlédnout nepotvrzené objednávky, zadejte číslo] Text;
    VYBERTE *
    FROM MojeTabulka
    V poli WHERE MůjSloupec = [Chcete-li zobrazit potvrzené objednávky, zadejte hodnotu Ano. Chcete-li si prohlédnout nepotvrzené objednávky, zadejte číslo];
    Vypočítaného ovládacího prvku na formuláři nebo sestavě zadejte:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Určit Seskupit podle

    Při seskupování záznamů podle hodnot ve spojeném poli zadejte Seskupit podle pole, které je ve stejné tabulce jako pole, které jsou součty, (na výpočet agregované). Například v ukázkové databáze Northwind.mdb Pokud vytvoříte dotaz zjišťuje součet v poli množství v tabulce Rozpis objednávek a pak seskupuje podle KódObjednávky, můžete určit seskupit pro pole ČísloObjednávky Rozpis objednávek tabulky. Zadáte-li seskupit podle pole ČísloObjednávky v tabulce objednávky, musí aplikace Access nejprve spojit všechny záznamy a poté proveďte vypočítat agregační funkci místo agregační výpočet provedla a následně spojila pouze požadovaná pole.

    Pro větší rychlost pomocí seskupit na jako několik polí co nejvíce. Pokud je to možné, případně použít první funkce.

    Je-li souhrnný dotaz obsahuje spojení, zvažte možnost seskupování záznamů v jednom dotazu a přidáním tohoto dotazu do samostatného dotazu, který provádí spojení. Pokud tak učiníte, mohou se některé dotazy vyšší výkon.
  • Nepoužívejte v dotazu omezující kritéria

    Nepoužívejte v dotazu omezující kritéria na výpočtová pole a na jiných indexovaná pole Pokud je to možné. Pomocí výrazů kritérií, které můžete optimalizovat.
  • Testování výkonu dotazu v pole, které se používá ve spojení mezi tabulkami

    Používáte-li kritéria Chcete-li omezit hodnoty v poli, které se používá při spojení mezi tabulkami s relací-n: n, ověřte, zda rychlejší spuštění dotazu s kritérii, umístěná na straně "1" nebo na straně "n" spojení. V některých dotazů mohou zjistíte rychleji přidáním kritérií do pole na straně "1" spojení namísto na straně "n" spojení.
  • Index třídící pole

    Indexujte pole, která můžete použít pro řazení.
  • Vytvářecí dotaz slouží k vytvoření tabulek

    Jestliže data jen zřídka mění, slouží k vytvoření tabulek z výsledků dotazu vytvářecí dotazy. Výsledné tabulky místo použít dotazy jako základ pro formuláře, sestavy nebo jiné dotazy. Přesvědčte se, zda přidat indexy souladu s pokyny, které je číst v tomto článku.
  • Vyhněte se použití doménových agregačních funkcí

    Vyhněte se používání doménové agregační funkce, jako je například funkce DLookup přístup k datům z tabulky, která není v dotazu. Doménové agregační funkce jsou specifické pro aplikace Access, a to znamená, že Jet databázový stroj není schopen optimalizovat dotazy, používající doménové agregační funkce. Místo toho přidejte dotazu do tabulky, který byl přístup k funkci nebo vytvoření poddotazu.
  • Použít pevné hlavičky sloupců

    Pokud vytváříte křížový dotaz, použít pevné hlavičky sloupců kdykoli je to možné.
  • Operátory

    Operátor Between... And, operátoru in a = operátor na indexovaná pole.
  • Optimalizujte výkon na serveru

    V případě hromadných aktualizačních dotazů zdrojů dat ODBC optimalizujte výkon na serveru nastavením vlastnost selhat při chybě na hodnotu Ano.

Odkazy

Informace o optimalizaci výkonu v aplikaci Microsoft Access 2000 získáte klepnutím v nabídce Nápověda na příkaz Nápověda pro Microsoft Access, zadejte optimalizovat výkon v Pomocníkovi Office nebo v Průvodci odpověďmi a klepnutím na tlačítko Hledat zobrazíte příslušné téma.
Klepnutím na Další informace o optimalizaci výkonu v aplikaci Microsoft Access 2002, příkaz Nápověda pro Microsoft Access v nabídce Nápověda typuzvýšení výkonnosti aplikace Access databázi v Pomocníkovi Office nebo v Průvodci odpověďmi a potom klepněte na tlačítko Hledat zobrazíte příslušné téma.

Další informace o zvýšení výkonu v aplikaci Access 2003 klepněte na příkaz Nápověda pro Microsoft Office Access v nabídce Nápověda typu zlepšení výkonu databáze aplikace AccessHledat pole v podokně pomoc a potom klepněte na tlačítko Spustit hledání zobrazíte příslušné téma.

Další informace o použití indexy v aplikaci Access 2000 získáte následujícím článku báze Microsoft Knowledge Base:
209564ACC2000: Složenou indexy musí omezit prvního indexovaného pole.

Vlastnosti

ID článku: 209126 - Poslední aktualizace: 28. listopadu 2007 - Revize: 2.5
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Klíčová slova: 
kbmt kbquery kbhowto kbperformance kbinfo kbusage KB209126 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:209126

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com