Farklı sorgulara bağlı olarak birden çok tablodaki verileri görüntülemek zorunda olan bir programın bir parçası var. Şimdiye kadar bu gibi görünüyor: Ben sonuçlarını almak ve farklı nesneler oluşturmak veya onlarla farklı alanlarda koymak Bundan sonraC# içinde çoklu SQL seçimleri optimize edin #
SELECT * FROM TABLE A WHERE ID = ...
SELECT [8 fields] FROM TABLE B WHERE ...
SELECT [5 fields] FROM TABLE C WHERE ...
SELECT [1 field] FROM TABLE D WHERE ...
SELECT [1 field] FROM TABLE E WHERE ...
SELECT [1 field] FROM TABLE F WHERE ...
SELECT [1 field] FROM TABLE G WHERE ...
SELECT [1 field] FROM TABLE H WHERE ...
SELECT [2 fields] FROM TABLE I WHERE ...
(sonraki her SEÇ biz A'dan var şeye dayanır unutmayın). Şey, düğmeyi tıklatıp pencerenin gösterilmesi arasında, yaklaşık 2 saniye gecikme var. Unutmayın, bu milyonlarca kayıt ile çok büyük bir veritabanı. DB'yi değiştirmek maalesef sorunun dışında. Sadece Primary Keys ile arama yapıyorum, aramayı daha da kısıtlaman için bir yolum yok.
bağlantı baştan açıldığında, öyle yakın değil/Her cümleden sonra yeniden açın. Sadece Tablo A ve Tablo B'ye katılırken, iki farklı Seçimden 1,5 saniyeye kadar daha uzun bir süre geçilir, sıralı seçimler ise 300 ms'ye düşer. İlk sorgunun DBMS'de yaklaşık 53 ms sürdüğü göz önüne alındığında, oldukça uzun bir süre olduğunu hala görüyorum.
C#, Net Framework 4'te ODBC sürücüsünü kullanıyorum. Veritabanının kendisi bir DB2'dir, ancak DB2 yerel sürücüsü bize çok fazla sorun verdi ve IBM bu konuda daha az yardımcı oldu. Sadece birkaç alanları seçin whnever Ayrıca
, ben sadece bu kullanarak ve varsayılan kalanını bırakarak gerekli nesne oluşturmak.
Bunu geliştirmek herhangi bir yolu var mı? önceden Andrei
Edit teşekkür ederiz:
--Two queries in another part of the program, we can ignore these, as they are not usually there-- 0.31 s
First query - 0.75 s
Second query - 0.87s
Third query - 0.95s
Fourth query - 0.99s
Fifth query - 1.00s
Sixth query - 1.04s
Seventh query - 1.08s
Eighth query - 1.10s
Ninth query - 1.12s
Program output - 1.81s
DB'yi değiştirdiğinizde, tablonun yapısını değiştirmeyi kastettiğinizi varsaydığım soruların dışında kalıyorsunuz. Yeni endeksler oluşturabiliyor musunuz? – Brad
@Brad, maalesef DB'nin de aynı ürünün daha eski bir versiyonunun DB üzerinde de çalıştığı ve her şeyin olduğu gibi olmasını beklediği için DB'yi hiçbir şekilde değiştiremeyiz. Genel olarak, tekrar edilmeyen alanlar birincil anahtar olarak eklenmiştir. –