ODBC veri kaynaklarını kullanırken Microsoft Access'i iyileştirme

Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı beceriler gerektirir.

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

Özet

Bu makalede, ODBC veri kaynağından verilere erişirken performansı geliştirmeye yönelik çeşitli ipuçları açıklanmaktadır.

Daha fazla bilgi

ODBC veri kaynaklarıyla performansı geliştirmek için aşağıdaki ipuçlarını kullanın:

  • Sunucudan istediğiniz veri miktarını kısıtlayın. İhtiyacınız olandan daha fazla veri istemeyin. Yalnızca ihtiyacınız olan alanları ve satırları seçmek için sorguları kullanın.

  • Yalnızca ihtiyacınız olan işlevselliği kullanın. Anlık görüntüler dinamik kümelerden daha az güçlü ve güncelleştirilebilir değildir. Ancak anlık görüntüler, özellikle Not veya OLE Nesnesi alanları olmayan küçük kayıt kümeleri için daha hızlı olabilir.

  • Sunucu verilerine erişmek için bağlı (ekli) tablolar oluşturun. "Doğrudan" sunucu erişiminden kaçının (başka bir ifadeyle uzak veritabanlarını açmayın ve bunlara karşı sorgu çalıştırmayın). Bunun yerine, ekli tablolar oluşturun veya doğrudan sorgular oluşturun.

  • Liste kutularını ve birleşik giriş kutularını akıllıca tasarla. Formda, toplam içeren her liste kutusu, birleşik giriş kutusu, alt form ve denetim ayrı bir sorgu gerektirir. Yerel verilerde performans yeterli olabilir. Ancak uzak verilere karşı, formu açtığınızda uzun gecikmeler yaşanabilir çünkü formun açılabilmesi için her sorgunun sunucuya gönderilmesi ve yanıt döndürülmesi gerekir.

  • Büyük birleşik giriş kutularından kaçının. Yerel tabloya dayalı yüzlerce, hatta binlerce seçenek içeren bir birleşik giriş kutusu dahil etmek, özellikle yerel tabloda uygun bir dizin tanımlarsanız kabul edilebilir bir yanıt süresi verebilir. Öte yandan, uzak bir tabloda bu tür bir birleşik giriş kutusu, listeyi doldurmak için veri getirirken sunucu ve ağ kaynaklarını boşalttığı için yavaş performans sağlar. Uzak verilerle çalışırken birleşik giriş kutusuna döndürülen satır sayısını sınırlamak en iyisidir. Ayrıca verileri daha küçük birleşik giriş kutularına da ayırabilirsiniz (yukarıdaki ipucunu göz önünde bulundurarak).

  • Bul komutunu yalnızca daha küçük kayıt kümelerinde kullanın. Microsoft Jet veritabanı altyapısı, Bul komutunu neredeyse her boyuttaki yerel kayıt kümelerine ve makul boyuttaki uzak kayıt kümelerine karşı iyi çalışacak şekilde iyileştirir. Ancak, büyük uzak kayıt kümeleriniz (binlerce kayıt veya daha fazlası) varsa, bunun yerine bir filtre veya sorgu oluşturmanız ve ayrıca sunucunuzun işleyebileceği kısıtlamaları kullanmaya dikkat etmelisiniz.

  • Sorguların işlenmek üzere sunucuya gönderildiğinden emin olun. Uzak verilere karşı sorgu performansının en önemli faktörü, sunucunuzun mümkün olduğunca çok sorguyu çalıştırmasını sağlamaktır. Microsoft Jet veritabanı altyapısı sorgunun tamamını sunucunuza göndermeye çalışır, ancak sunucular veya belirli bir sunucunuz tarafından genel olarak desteklenmeyen tüm sorgu yan tümcelerini ve ifadelerini yerel olarak değerlendirir. Sunucular tarafından genel olarak desteklenmeyen işlevler aşağıdakileri içerir:

  • Tek bir SQL deyiminde ifade edilemeyen işlemler. Bu durum, sorguyu başka bir sorguya giriş olarak kullandığınızda veya sorgunuzun FROM yan tümcesi toplamlar sorgusu veya DISTINCT sorgusu içerdiğinde ortaya çıkabilir. Çoğu zaman, diğer tüm işlemlerden sonra toplamları hesaplamak için sorgularınızı yeniden düzenleyebilirsiniz.

    • Çapraz sorgular, TOP sorgular ve birden çok gruplandırma ve toplam düzeyine sahip raporlar gibi Sql için Microsoft Jet veritabanı altyapısına özgü uzantılar olan işlemler. Basit çapraz sorguların sunuculara gönderilebileceğini unutmayın.
    • Microsoft Access'e özgü işleçleri veya işlevleri içeren ifadeler. Microsoft Access finansal işlevlerinin ve istatistiksel toplamaların sunucu eşdeğeri yoktur.
    • Uzak sütunları bağımsız değişken olarak alan kullanıcı tanımlı Visual Basic for Application işlevleri. Bu işlevler sunucuda yoktur, ancak uzak sütun verilerini işlemelidir. Ancak, kullanıcı tanımlı bir işlev tek bir değer döndürürse ve uzak bir sütuna başvurmazsa, işlev yerel olarak değerlendirilir ve değeri işlenmek üzere sunucuya gönderilir.
    • İşleçlerde veya UNION sorgu çıkışlarında metin ve sayısal veri türlerini karıştırma. Çoğu sunucuda Microsoft Access'in veri türü esnekliği yok. Bu nedenle, uygun yerlerde açık dönüştürme işlevlerini kullanın.
    • Yerel tablolar ve uzak tablolar arasında veya farklı ODBC veri kaynaklarında uzak tablolar arasında heterojen birleşimler. Birleştirme sütununun dizine alındığı küçük yerel tablolar ile büyük uzak tablolar arasındaki birleşimler, uzak dizin birleşimine neden olabilir. Uzak dizin birleştirmesinde, yerel tablodaki her satır için bir sorgu sunucuya gönderilir ve yalnızca birleştirilmiş satırlar döndürülür.
    • Uzaktan gönderilemeyen ifadeler veya sunucunuz tarafından değerlendirilemediği için uzaktan gönderilemeyen ifadeler. Uzak olmayan çıkış ifadeleri (SELECT yan tümcesindekiler) Toplamlar sorgusunda, DISTINCT sorgusunda veya UNION sorgusunda gerçekleşmediği sürece sorgunuzun yerel olarak değerlendirilmesini zorlamaz. Diğer yan tümcelerdeki (WHERE, ORDER BY, GROUP BY, HAVING vb.) uzak edilemeyen ifadeler, sorgunuzun en az bir kısmının yerel olarak değerlendirilmesini zorlar.
  • Sunucular desteklenen işlevlerin bazı alanlarında farklılık gösterir. Uzak bir tablo eklediğinizde, Microsoft Jet veritabanı altyapısı ODBC sürücüsünün özelliklerini sorgular. Gerekli işlevsellik sürücü ve sunucu tarafından destekleniyorsa, Microsoft Jet veritabanı altyapısı işlemi işlemek üzere sunucuya gönderir. Aksi takdirde, Microsoft Jet veritabanı altyapısı işlemi yerel olarak gerçekleştirir. Farklı destek alanları aşağıdakileri içerir (ancak bunlarla sınırlı değildir):

    • Dış birleşimler. Birçok iç birleşim tek bir dış birleşime eşlik etse de, Microsoft Jet veritabanı altyapısının bir sunucuya birden çok dış birleşim göndermediğini unutmayın.
    • Log(), Mid$(), DatePart() gibi sayısal, dize ve tarih/saat işlevleri.
    • CInt(), CStr(), CVDate() gibi dönüştürme işlevleri.