Hangisi daha hızlı katıl


12

Hangisi daha hızlı

SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique

veya

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID

Yanıtlar:


17

Hiçbir fark olmayacak - mssql'deki sorgu motoru (ve çoğu veritabanı motorunda) her ikisi için de aynı sorgu planını oluşturacaktır. SQL Workbench'te tahmini ve gerçek sorgu planını görüntüleyerek bunu doğrulayabilirsiniz.


10

Optimize edici bunu görmezden gelecek, çünkü bu aynı bir JOIN.

SQL yordamsaldır, yordamsal değildir ve sorgu satır satır değil, toto olarak değerlendirilir.


4

Sorunuzu cevaplamak için kendi verilerinizi kullanan bir test oluşturmaya ne dersiniz?

Veritabanı programlama hakkında sadece bir şey öğrenirseniz, genellikle tek bir boyutun hiçbir şeye tüm çözümlere uymadığıdır. Elbette en iyi uygulamalar var, ancak genel olarak her zaman durumdur.

Ben bunun nedeni veritabanı sorguları ile genellikle tek bir boyutu her şeye uygun bir yaklaşım yoktur çünkü bunun nedeni. Verilerinizden sonra nasıl gideceğinize karar veren bir planlayıcı olduğu için, aynı sorgu, planlayıcının herhangi bir zamanda mevcut olan bilgilerle ne yapmayı seçtiğine bağlı olarak hızlı veya çok yavaş ışık olabilir. Örneğin, bir dizin, bir ay ve bir ay sonra, veri arıyor veya ekliyor olmanıza ve sorguyu çalıştırırken başkalarının sistemi nasıl kullandığına bağlı olarak en iyi arkadaşınızdır. Bu nedenle, her zaman bu sorgunun nasıl çalışacağını kullanım durumunuz için kanıtlayan bir test oluşturmanızı öneririz. Ve o zaman bile sonuçlarınız zaman içinde değişebilir ve veri ve kullanım değiştikçe optimize etmek için geri dönersiniz.

Stackoverflow'dan alacağınız cevapların, sadece ortamınızın sağlayabileceği gerçek dünya cevabı değil, ders kitabı cevapları olacağını düşünüyorum. Ve sonuçta sizin için önemli olan gerçek dünya sonucunuz.

Şimdi burada gösterdiğiniz basit bir sorgu hem aynı performans akıllıca olmalıdır. Ama o zaman bile test et ve soruyu soruyorsanız kanıtla derim. Benim de dahil olmak üzere anyonların cevabına güvenmeden önce sonuçlara güvenirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.