SORU
26 EYLÜL 2008, Cuma


Alt sorgular vs katıldı

Başka bir şirketten miras kaldığını, uygulamanın yavaş bir bölüm gibi bir alt sorgu yerine bir iç birleşim kullanmam refactored

where id in (select id from ... )

Refactored sorgu yaklaşık 100 kez daha hızlı çalışır.(~50 saniye ~0,3) bir gelişme bekliyordum, ama bir insanın bu kadar ciddi olduğunu açıklayabilir mi? Sütunları yan dizine her yerde kullanılır. SQL where yan tümcesi bir kez satır başı falan sorguyu yürütmek mu?

GüncellemeSonuçları açıklamak:

Fark ikinci bölümünde "kimliği ()," sorgu

2   DEPENDENT SUBQUERY	submission_tags	ref	st_tag_id	st_tag_id	4	const	2966	Using where

vs ile 1 endeksli satır birleştirme:

    SIMPLE	s	eq_ref	PRIMARY	PRIMARY	4	newsladder_production.st.submission_id	1	Using index

Herkese teşekkürler!

CEVAP
26 EYLÜL 2008, Cuma


Bir "" (burada durum değerlerini içeren sorgu satır elde bağlıdır yani,) her satır için bir kez çalıştırılır sorgu ilişkili Olmayan-ilişkili alt sorgu koşulu içeren sorgu bağımsız bir () bir zamanlar başında yürütülür. SQL motoru bu ayrım otomatik olarak yapar.

Ama, evet, açıkla-plan kirli detayları verecektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • John Lynn

    John Lynn

    8 Ocak 2010
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013