Basit bir SELECT sorgusu oluşturmanın daha uygun maliyetli yolu hangisidir. Birinci seçenek:Basit SELECT sorgusunun çoklu NOT IN değerleriyle en iyileştirilmesi
SELECT id
FROM table
WHERE COL0 NOT IN (2,3,4,5,6,7,8,9...)
AND COL1 >= 20
AND COL2 <= 10
AND .... ;
Veya seçenek iki:
SELECT id FROM table WHERE COL0 NOT IN (2,3,4,5,6,7,8,9...);
col0 FK sütundur.
Gerekli olan ilk şey, COL0 üzerinde dizin olabilir. Ama oradan ..
- NOT IN yan tümcesinde bulunan numara örneğin 1'den 1000'e kadar olabilir.
Sorular: WHERE yan tümcesinde
- misiniz ek değerler yanıt olarak olmamalıdır şeyler ortadan kaldırarak daha hızlı sorgu gerçekleştirmek için DB yardımcı yoksa sadece kontrol için ek çalışma olacak ek değerlere uygun mu?
- Teorik olarak NOT IN deyiminde yüzlerce ID değerine sahip olmak, kötü ve "pahalı" tasarım olarak kabul edilir?
Firebird 2.5 kullanıyorum.
bu değeri kurtarabilir? Sorgu planları neye benziyordu? –
Üzgünüz, henüz yorum yok, henüz yorum yapma iznim yok. Sorum şu, ne yapmaya çalışıyorsun? Tek kullanım için mi yoksa sürekli olarak kullanılacak bir şey mi? –
Amaç, "geçerli veri kümesinde" bulunmayan tüm ID'leri sorgulamak ve "etkin olmayan" bir satır eklemek için DB'de kaydedilen verileri değil, "geçerli veri kümesinde" (java nesneleri) bulunmayan verileri karşılaştırmaktır. Her kimlik için soruda işaretli sorgudan var. – Novice