Bana öyle geliyor ki DEĞİL, DEĞİL, IN veya LEFT JOER NULL NEREDE kullanarak bir SQL sorgusu yapabilirsiniz. Örneğin:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
Tüm sözdizimini doğru alıp almadığımdan emin değilim, ama bunlar genel olarak gördüğüm teknikler. Neden birini diğerinin üzerinde kullanmayı seçeyim ki? Performans farklı mı ...? Bunlardan hangisi en hızlı / en verimli? (Uygulamaya bağlıysa, her birini ne zaman kullanırım?)
EXISTSmadde içinde tam olarak ne döndürdüğünüzü umursamaz . Geri dönebilirsiniz *, NULLya da her neyse: tüm bunlar optimize edilecektir.
SELECTve arasında bir şey koymanızı talep ettiği sorgu ile ilgilidir FROM. Ve yazmak *daha kolaydır. Evet, SQLdoğal bir dile benzerlik gösterir, ancak bir makine, programlanmış bir makine tarafından ayrıştırılır ve yürütülür. Bu, aniden kablonuza girip "bir EXISTSsorgudaki fazladan alanları talep etmeyi durdurun çünkü onları ayrıştırmaktan ve sonra atmaktan bıktım!" Diye bağırmayacak . Gerçekten bir bilgisayarla sorun yok.