morfizm (morfizm) wrote,
morfizm
morfizm

Category:

SQL Left Semi Join

Как я и ожидал, следующие два запроса генерируют совершенно одинаковый execution plan (большой dataset, C имеет clustered index на field2):

INSERT INTO A
    SELECT * 
        FROM B
        WHERE field1 IN (SELECT field2 FROM C)

INSERT INTO A
    SELECT * 
        FROM B
        WHERE EXISTS (SELECT field2 FROM C WHERE field2 = field1)
Причём процесс, происходящий между таблицами C и B, гордо именуется "Left Semi Join", что означает буквально то, что написано в вышеприведённых фрагментах.

Интересно, существует ли стандартное название для ещё более хитрого join'а: для каждой строки из B взять одну (TOP 1) совпадающую строку из C, но каждую строку из C использовать не более, чем 1 раз? (Мне предстоит решить эту задачу сегодня-завтра).
Subscribe

  • Программисты - не боги?

    Мне знакомый сказал, что программисты - не боги. Это прям обидно, потому что с подразумеваемым квантором "всегда" это неверно. Программисты не боги…

  • Нагуглил свой же солюшен - wow!

    У меня, кажется, впервые в жизни опыт, когда по нетривиальному техническому вопросу я нагуглил свой собственный солюшен на Stackoverflow. Я купил…

  • Грусть

    Люди совершенно несправедливо осуждают грусть. Бросаются сразу помогать, решать проблемы, помочь человеку избежать грусти, развеселить. А ведь…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 25 comments

  • Программисты - не боги?

    Мне знакомый сказал, что программисты - не боги. Это прям обидно, потому что с подразумеваемым квантором "всегда" это неверно. Программисты не боги…

  • Нагуглил свой же солюшен - wow!

    У меня, кажется, впервые в жизни опыт, когда по нетривиальному техническому вопросу я нагуглил свой собственный солюшен на Stackoverflow. Я купил…

  • Грусть

    Люди совершенно несправедливо осуждают грусть. Бросаются сразу помогать, решать проблемы, помочь человеку избежать грусти, развеселить. А ведь…