Access veritabanında sorgu performansı hakkında bilgiler

Makale çevirileri Makale çevirileri
Makale numarası: 209126 - Bu makalenin geçerli olduğu ürünleri görün.
Orta: temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir.

Bu makale yalnızca Microsoft Access veritabanı (.mdb) için geçerlidir.

Bu makalede, Access 97 sürümü için bkz: 112112.
Hepsini aç | Hepsini kapa

Bu Sayfada

Giriş

Bu makalede, Microsoft Access 2000'de, Microsoft Access 2002 ve Microsoft Office Access 2003'te, sorgu performansını en iyi şekilde yararlanma yöntemlerini anlatılır. Aşağıdaki konular bulunur:
  • Microsoft Jet veritabanı altyapısı için sorgu iyileştirici
  • Sorgu zamanlama
  • Performansı çözümleme
  • Sorgu performansını artırmak için ipuçları
Bu makalede, veritabanınızın bağlantılı (ya da bağlı) tablosu yerine yerel tablolar olduğunu varsayar. Bu bilgiler, tablolarınızın bağlıysa, yine de geçerlidir. Ancak, sorgu etkileyen ek sorunlar bulunmaktadır bağlantılı tablolarla performansı. Bağlı tabloların performansını iyileştirme hakkında daha fazla bilgi için aşağıdaki dizeyi kullanarak Microsoft Knowledge Base'de arama yapabilirsiniz:
ODBC ve en iyi duruma getirme ve tablolar

Daha fazla bilgi

Microsoft Jet veritabanı altyapısı için sorgu iyileştirici

Jet veritabanı alt yapısı, çeşitli bileşenler içerir, ancak sorgulara en önemli bileşeni (ve en karmaşık) the Optimizer. Optimizer maliyet tabanlı iş. Bu, Optimizer ' zaman maliyet, her sorgu göreve atar ve sonra da hedeflenen bir sonuç kümesi oluşturan en ucuz gerçekleştirmek için görevler listesini seçer anlamına gelir. Uzun bir görev gerçekleştirmek, görevin daha pahalı olan sürer.

Hangi sorgu stratejisini kullanmaya karar vermek için <a0></a0>, istatistikleri Optimizer'ı kullanır. Aşağıdaki Etkenler bu istatistikleri dayalı etkene bazıları şunlardır:
  • Bir tablodaki kayıtların sayısı
  • Bir tablodaki verileri sayfa sayısı
  • Tablo konumu
  • Dizinlerin geçerli olup
  • Nasıl dizinleri benzersizdir
Bu istatistik bağlı olarak, the Optimizer sonra belirli bir sorgu ile ilgili iç sorgu en iyi strateji seçer.

Sorguda derlenmiş her istatistikleri güncelleştirilir. Bir sorguyu, sorgu (veya onun altındaki tüm tablolar) ve veritabanı sıkıştırıldıktan değişiklikleri kaydettiğinizde, derleme için bayrak. Bir sorgunun derleme için bayraklı, derleme ve istatistiklerinin güncelleştirmeyi sorguyu çalıştırmak bir sonraki başlatılışında oluşur. Genellikle derleme, bir saniye ile dört saniye ile alır.

Veritabanınıza çok sayıda kayıt eklerseniz, açmalı ve sorguları yeniden derlemek için sorgularınızı kaydedin. Örneğin, tasarım ve sonra küçük bir örnek verileri kullanarak bir sorguyu sınama, ek kayıtlar veritabanına eklendikten sonra sorguyu re-compile gerekir. Bunu yaptığınızda, uygulama tarafından kullanımda değilken en uygun sorgu performansı elde emin olmanız gerekebilir.

Not Jet veritabanı altyapısı için en iyi duruma getirme düzenleri görüntüleyemezsiniz ve bir sorgu en iyi şekilde yararlanma yöntemlerini belirleyemezsiniz. Ancak, dizinler var ve nasıl benzersiz bir dizin belirlemek için Database Belgeleyici'yi kullanabilirsiniz.

Access 2000'de veritabanı Belgeleyici'yi kullandığınızda oluşabilecek bir sorun hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
207782ACC2000: Hata: Veritabanı'nı kullanarak nesne açıksa Belgeleyici'yi

Sorgu zamanlama

Seçme sorgusu için iki önemli bir zaman ölçümleri vardır:
  • Zaman veri'nın ilk ekranında görüntülemek için
  • Son kayda almak için zamanında
Sorguda yalnızca bir ekran veri döndürürse, bu iki kez ölçümlere aynıdır. Sorguda, çok sayıda kayıt döndürürse, bu zaman ölçümleri çok farklı olabilir.

Veri Sayfası görünümünde bir seçme sorgusu görüntülediğinizde, iki ölçüm aynıysa, veri ve sayısı, "Kayıt 1 N ' nın." gibi bir sorgu tarafından döndürülen kayıtları bir ekran Bkz: Ilk ekranında, sorguyu tamamlayın ve sonra son kaydı almak için farklı verileri görüntülemek Jet veritabanı altyapısının hızlıdır veriler, ancak "Kayıt 1 N ' nın" hiçbir N bir ekran görürsünüz. N değeri, sorgu işlemi tamamlanıncaya kadar veya son kayda gidin kadar boştur.

Bu davranış Jet veritabanı altyapısı, iki performans stratejilerini birini sonucudur:
  • Sorgu tamamlayın ve sonra da verileri görüntüleme
  • Verileri görüntüleyen ve sorgu tamamlayın
Kullanılan strateji denetleyemezsiniz. Jet veritabanı alt yapısı, etkili olan stratejisini seçer.

Performansı çözümleme

Microsoft Access 7.0, Access 97, Access 2000, Access 2002 veya Access 2003 kullanıyorsanız, veritabanınızda sorgularını çözümlemek için Performans Çözümleyicisi'ni kullanabilirsiniz. Sorgu performans çözümlemesi, Jet veritabanı alt yapısı için yakından bağlı olduğundan, Performans Çözümleyicisi, yalnızca dizinleri gerçekten Jet veritabanı alt yapısı tarafından sorguyu en iyi duruma getirmek için kullanılır, dizinleri ekleme önerir. Bu, Performans Çözümleyicisi veritabanınıza daha aşağıda "sorgu performansını artırmak için ipuçları" bölümünde listelenen genel öneriler daha özgü performans ipuçları sağlamasını anlamına gelir.

Performans Çözümleyicisi, Access 7.0, Access 97, Access 2000, Access 2002 veya Access 2003'te çalıştırmak için şu adımları izleyin:

Araçlar menüsünden Çözümle ' yi tıklatın ve sonra Performans ' ı tıklatın.

Sorgu performansını artırmak için ipuçları

Sorgu performansını artırmak için bu ipuçlarını deneyin:
  • Veritabanınızı sıkıştırmak

    Veritabanınızın sıkıştırdığınızda sorgularını hızlandırabilirsiniz. Veritabanınızın sıkıştırdığınızda, kayıtları tablonun birincil anahtarı tarafından sipariş edilen bitişik veritabanı sayfaları bulunması için kayıtları tablonun reorganized. Istediğiniz kayıtları almak için okumak yalnızca en az sayıda veritabanı sayfaları şimdi olduğundan, bu tablodaki bir sıralı taranmasını performansını artırır. Veritabanınızı sıkıştırmak sonra her sorgu, sorgu her sorgu şimdi güncelleştirilmiş tablo istatistiklerini gerekir böylece derlemeye çalıştırın.
  • Bir alanda dizin

    Birleştirme her iki tarafına sorgu alanları ve dizin alanları için ölçütler ayarlamak için kullanılan herhangi bir alanda dizin. Veya, bu alanlar arasında bir ilişki oluşturun. Zorlanmış bir başvuru bütünlüğü ile bir ilişki oluşturduğunuzda, Jet veritabanı alt yapısı bir zaten yoksa, yabancı anahtar üzerinde bir dizin oluşturur. Aksi halde, Jet veritabanı alt yapısı, varolan dizini kullanır.

    Not Jet veritabanı altyapısı otomatik olarak sabit diskinizdeki bir Access tablosu ve bir <a0>ODBC</a0> sunucu tablosu, birleştiren bir sorgu en iyi duruma erişim küçük ve birleştirilen alanları dizinlenmiştir tablodur. Bu durumda, Access, sunucudan yalnızca gerekli kayıtları isteyerek performansını geliştirir. Birleştirme alanları farklı kaynaklardan gelen birleştirme tablolarını dizine alınacağını da emin olun.
  • Uygun olan en küçük veri türünü seçin

    Bir tablodaki bir alanı tanımlarken, alandaki veriler için uygun olan en küçük veri türünü seçin. Ayrıca, (FieldSize özelliği Uzun Tamsayı olarak ayarlanmışsa) birleşimlerde kullanmayı düşündüğünüz alanları aynı veri türleri veya uyumlu veri türlerini (örneğin, otomatik numara ve numarası olmasına dikkat edin.
  • Yalnızca gereksinim duyduğunuz alanları ekleyin

    Bir sorgu oluşturduğunuzda, yalnızca gereken alanları ekleyin. Bu alanları görüntülemek istemiyorsanız Göster onay kutusunu temizlemek için ölçüt belirlemek için kullanılan alanları'nı tıklatın.
  • SQL deyimini bir sorgu olarak kaydedin...

    RecordSource özelliği, form veya rapor için bir SQL deyimi için ayarlanmışsa, SQL ifadesini sorgu olarak kaydedin ve sonra RecordSource özelliğini sorgu adına ayarlayın..
  • Hesaplanan alanların kaçının.

    Alt sorgular hesaplanmış alanlarda kaçının. Başka bir sorgu için hesaplanmış alan içeren bir sorgu eklerseniz, hesaplanmış alanı deyimde en üst düzey sorgunun içindeki performansı yavaşlatabilir. Aşağıdaki örnekte, sorgu Q1, sorgu Q2 için girdi olarak kullanılır:
    S1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM Tablom
    S2: SELECT * FROM S1 WHERE "Order" Onaylandı; = X
    En iyi S1 IIF deyimde en iyi hale getirilemez, çünkü s2 de hale getirilemez. En iyi bir alt sorguda yuvalanmış bir ifadenin en iyi hale getirilemez, tüm sorgu hale getirilemez.

    Sorguyu oluşturmak için alternatif bir yol aşağıdaki gibidir:
    S1: SELECT * FROM Tablom WHERE Sütunum = "Yes";
    Ifadeler çıktıda gerekliyse, bir formdaki veya rapordaki bir denetime ifadeler koymak deneyin. Örneğin, önceki sorguyu Sütunum değeri için uyaran parametre sorgusu değiştirmek ve sorguyu bir form veya raporun temel. Daha sonra formun veya raporun bağlı olarak Sütunum değeri "Merhaba" veya "Güle güle," görüntüleyen, hesaplanan bir denetimin ekleyebilirsiniz.

    Sorguyu aşağıdaki gibi oluşturun:
    PARAMETERS, [teyit edilen siparişleri görmek için Evet seçeneğini girin. Teyit edilmemiş siparişleri görmek için <a0></a0>, girin No] Metin;
    SEÇİN *
    Tablom
    WHERE Sütunum = [teyit edilen siparişleri görmek için Evet seçeneğini girin. Teyit edilmemiş siparişleri görmek için <a0></a0>, girin No];
    Hesaplanmış denetimde form veya rapor üzerinde aşağıdakileri yazın:
    IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") =
  • GROUP BY belirtin.

    Birleştirilen alandaki değerlere göre kayıtları gruplandırdığınızda, GROUP BY için (toplama, hesaplama) toplam alanıyla aynı tablodaki alanı belirtin. Miktar alanına Sipariş Ayrıntıları tablosu ve daha sonra SiparişNo gruplarınca toplamların bir sorgu oluşturursanız, örneğin Northwind.mdb adlı örnek veritabanındaki GROUP BY sipariş ayrıntılarını Sipariş Kimliği alanı için belirtebileceğiniz tablo. GROUP BY Siparişler tablosundaki Sipariş Kimliği alanı için belirtirseniz, Access önce tüm kayıtları birleştirmek ve toplama gerçekleştirmek ve sonra da yalnızca gerekli alanları birleştirmek yerine toplama, gerçekleştirin gerekir.

    Daha yüksek hız için GROUP BY olabildiğince az alanları kullanın. Yapabiliyorsanız, bunun yerine ilk işlevini kullanın.

    Toplam sorgusu bir birleşim içeriyorsa, bir sorgudaki kayıtları gruplandırma ve sonra da birleştirme gerçekleştirir ayrı bir sorgu için bu sorguyu eklemeyi düşünün. Bunu yaptığınızda, performans ile ilgili bazı sorgular geliştirilmiş.
  • Kısıtlayıcı bir sorgu ölçütü kaçının.

    Yapabiliyorsanız, kısıtlayıcı bir sorgu ölçütü hesaplanan alanlar ve alanlar eklenmemiş kaçının. En iyi duruma getirebilirsiniz ölçüt ifadelerini kullanın.
  • Tablolar arasında birleştirme kullanan bir alanda, sorgu performansını sınayın.

    Bir-çok ilişkisi olan tablolara arasında bir birleşim kullanılan bir alandaki değerleri sınırlamak için ölçüt kullanırsanız, sorgu daha hızlı "bir" tarafındaki veya birleştirmenin "çok" tarafındaki ölçütlerle çalışır olup olmadığını sınayın. Bazı sorgularda, "bir" tarafındaki yerine birleştirmenin "çok" tarafındaki birleştirme alanına ölçüt ekleyerek daha hızlı performans bakmanızın gerekli.
  • Dizin sıralama alanları

    Sıralama için kullandığınız alanları dizin.
  • Tablolar oluşturmak için tablo oluşturma sorgularını kullanın.

    Verileriniz nadiren değişiyorsa, tablo yapma sorguları, sorgu sonuçlarından tablolar oluşturmak için kullanın. Sonuçta elde edilen tablolar yerine sorgulara formlarınızı, raporlarınızı ve diğer sorgularınızı temel olarak kullanın. Bu makaledeki dizinlere okumanız yönergelere göre eklediğinizden emin olun.
  • Etki alanı toplama işlevlerini kullanmaktan kaçının

    Etki alanı toplama işlevlerini, sorguda bulunmayan bir tablodaki verilere erişmek için DLookup işlevi gibi kullanmaktan kaçının. Etki alanı toplama işlevlerini Access'e özgüdür ve Jet yani veritabanı alt yapısı, etki alanı toplama işlevlerini kullanan sorguları en iyi edemiyor. Bunun yerine, işlevi erişimi tabloyu sorguya ekleyin veya bir alt sorgu oluşturma.
  • Sabit sütun başlıklarını kullanın

    Çapraz sorgu oluşturuyorsanız, olanaklı olduğunda sabit sütun başlıklarını kullanın.
  • Işleçler

    Between... And işleci, gelen işlecini kullanın ve = dizin haline getirilmiş alanlarda işletmeni.
  • Sunucudaki performansı en iyi duruma getirme

    ODBC veri kaynaklarına karşı yığın güncelleştirme sorguları için Evet'e FailOnError özelliği ayarlayarak sunucudaki performansı en iyi duruma getirin.

Referanslar

Microsoft Access 2000'de, performansı en iyi duruma getirme hakkında daha fazla bilgi için Yardım menüsünden Microsoft Access Yardımı ' nı tıklatın, performansı en iyi duruma getirme, Office Yardımcısı'na veya Yanıt Sihirbazı yazın ve sonra döndürülen konuları görüntülemek için Ara ' yı tıklatın.
Microsoft Access 2002'de, performansı en iyi duruma getirme hakkında daha fazla bilgi için Microsoft Access Yardımı ' nı Yardım menüsünde türü tıklatın Access performansını artırma veritabanı Office Yardımcısı'na veya Yanıt Sihirbazı'nı ve sonra döndürülen konuları görüntülemek için Ara ' yı tıklatın.

Access 2003'te performansını iyileştirme hakkında daha fazla bilgi için Yardım menüsünde, bir Access veritabanının performansı artırmaAra Yardım bölmesindeki tıklatın ve sonra döndürülen konuları görüntülemek için Aramayı Başlat türü Microsoft Office Access Yardım ' ı tıklatın.

Access 2000'de dizin kullanma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
209564ACC2000: İlk dizinlenmiş bir alanda bileşik dizinleri sınırlamalısınız.

Özellikler

Makale numarası: 209126 - Last Review: 28 Kasım 2007 Çarşamba - Gözden geçirme: 2.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbquery kbhowto kbperformance kbinfo kbusage KB209126 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:209126

Geri Bildirim Ver

 

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