Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ построСния слоТных конструкций Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса слуТит источником для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ИмСнно здСсь Π½Π° сцСну выходят Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ трансформации Π΄Π°Π½Π½Ρ‹Ρ… "Π½Π° Π»Π΅Ρ‚Ρƒ". ПониманиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΡ… выполнСния критичСски Π²Π°ΠΆΠ½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, стрСмящСгося ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простых Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос выполняСтся Π² контСкстС внСшнСго запроса, пСрСдавая Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π΅Π· явного сохранСния Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ использовании ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сущСствСнному замСдлСнию Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ конструкции ΠΈ Π³Π΄Π΅ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ.

Базовая структура ΠΈ синтаксис Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… запросов

БинтаксичСски Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос располагаСтся Π² сСкции Π˜Π— основного запроса. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнноС псСвдонимноС имя, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обращаСтся внСшний запрос. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° воспринимаСт Ρ‚Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния.

Рассмотрим ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρƒ, остатки ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ складу. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ запрос вычисляСт срСднСС, Π° внСшний β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹. Вакая структура позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ создания Π»ΠΈΡˆΠ½ΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π² памяти.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. Π’Π°Π±Π»ΠΈΡ†Ρ‹, описанныС Π²ΠΎ внСшнСм запросС, Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ явно Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ соСдинСния. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ изоляции ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ логичСских ошибок ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° псСвдонимы ΠΏΠΎΠ»Π΅ΠΉ внСшнСго запроса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… подзапросов Π² классичСских Π‘Π£Π‘Π”, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ MS SQL Server.

ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° слСдуСт ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ΠΈ записаны Π² ΠΎΠ΄Π½Ρƒ строку. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ отступы ΠΈ пСрСносы строк для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ раздСлСния ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ. Если Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ запросС Π½Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ явныС ΠΈΠΌΠ΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ КАК, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° присвоит ΠΈΡ… автоматичСски, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²ΠΎ внСшнСм запросС.

πŸ’‘

ВсСгда Π΄Π°Π²Π°ΠΉΡ‚Π΅ осмыслСнныС псСвдонимы Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ запросам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠžΡΡ‚Π°Ρ‚ΠΊΠΈ), это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ выполнСния ΠΈ оптимизация сСрвСром

Когда Π²Ρ‹ отправляСтС запрос с Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° сСрвСр 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡ, происходит процСсс трансляции языка запросов 1Π‘ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ SQL Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π‘Π£Π‘Π”. Π‘Π΅Ρ€Π²Π΅Ρ€ 1Π‘ выступаСт Π² Ρ€ΠΎΠ»ΠΈ ΡƒΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ структуру Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный ΠΏΠ»Π°Π½ выполнСния.

Π’ идСальном сцСнарии сСрвСр 1Π‘ "Ρ€Π°ΡΠΏΠ»ΡŽΡ‰ΠΈΠ²Π°Π΅Ρ‚" Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос, объСдиняя Π΅Π³ΠΎ с основным запросом Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ SQL-ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π±Π°Π·Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠΌ, Π±Π΅Π· создания ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° дискС ΠΈΠ»ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° оптимизация Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. Если Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ запросС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ слоТныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Π³Ρ€Π΅Π³Π°Ρ‚Ρ‹ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‚ΡΡ Π²ΠΎ внСшнСм запросС, сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

  • πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ происходит автоматичСски, Ссли Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос Π½Π΅ зависит ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… внСшнСго контСкста.
  • βš™οΈ Π‘Π΅Ρ€Π²Π΅Ρ€ 1Π‘ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ индСксы Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для ускорСния соСдинСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈ основного запроса.
  • πŸ“‰ Глубокая Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ (Π±ΠΎΠ»Π΅Π΅ 3-4 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ) ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ привСсти ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ нСэффСктивного ΠΏΠ»Π°Π½Π°.

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ выполняСтся ваш запрос, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль запросов ΠΈΠ»ΠΈ встроСнный ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€. Анализ ΠΏΠ»Π°Π½Π° выполнСния ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Π±Ρ‹Π»ΠΈ Π»ΠΈ созданы Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ запрос Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†?

Если ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ 1Π‘ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ "ΡΠ»ΠΈΡ‚ΡŒ" запросы, ΠΎΠ½ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки внСшнСго запроса ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тяТСлыС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ структуры, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Ρ‹ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ явного создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с индСксами.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Одним ΠΈΠ· самых частых вопросов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ уровнями запроса. Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, прямая связь Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½ΠΎ сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ подзапросы.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΎ внСшнСм запросС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса. ΠŸΡ€ΠΈ этом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° вычисляСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, сумма ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС суммы ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² спискС. Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ потрСбуСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

ВЫБРАВЬ

ДокумСнтыРСализация.Бсылка КАК Бсылка

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК ДокумСнтыРСализация

Π“Π”Π•

ДокумСнтыРСализация.Π‘ΡƒΠΌΠΌΠ° >

(ВЫБРАВЬ

БУММА(Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠ”Π°Π½Π½Ρ‹Π΅.Π‘ΡƒΠΌΠΌΠ°)

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠ”Π°Π½Π½Ρ‹Π΅

Π“Π”Π•

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉΠ”Π°Π½Π½Ρ‹Π΅.Бсылка = &ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠŸΠ΅Ρ€Π²ΠΎΠ³ΠΎΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°)

ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ зависит ΠΎΡ‚ поля Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки внСшнСго запроса, Ρ‚Π°ΠΊΠΎΠΉ запрос станСт Π½Π΅Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΌ (нСсСтСвым) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ цикличСски, Ρ‡Ρ‚ΠΎ нСдопустимо Π² высоконагруТСнных систСмах.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса, Ссли ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСняСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки внСшнСго запроса. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса N Ρ€Π°Π·, Π³Π΄Π΅ N β€” количСство строк Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ВмСсто цикличСского выполнСния Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ соСдинСния (Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π•, ВНУВРЕННЕЕ Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π•), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π‘Π£Π‘Π” Π³ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ стоит ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для случаСв, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся константой для всСго запуска запроса.

πŸ“Š Какой способ связи ΠΌΠ΅ΠΆΠ΄Ρƒ запросами Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса
Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
БоСдинСния (JOIN)
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ запросом ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ β€” это классичСская Π΄ΠΈΠ»Π΅ΠΌΠΌΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² 1Π‘. Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ явно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции ВЫБРАВЬ ... ΠŸΠžΠœΠ•Π‘Π’Π˜Π’Π¬ ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСанса ΠΈΠ»ΠΈ Π΄ΠΎ явного удалСния.

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания индСксов. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΈΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ большими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, индСкс Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ даст ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² скорости.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ Π² простотС ΠΊΠΎΠ΄Π° ΠΈ отсутствии Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π±Π°Π·Π΅ tempdb (для SQL Server) ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… систСмных областях Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π”. Они ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ нСбольшого объСма.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСксов НСвозмоТно Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ рСкомСндуСтся
Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Высокая (ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ) БрСдняя (разнСсСно ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ)
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Низкая (Π±Π΅Π· индСксов) Высокая (с индСксами)
Нагрузка Π½Π° TempDB Минимальная ЗамСтная ΠΏΡ€ΠΈ частом создании

Если объСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ нСсколько тысяч строк, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Ρ‚ΠΎΠ½Π° считаСтся Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π­Ρ‚ΠΎ позволяСт сСрвСру 1Π‘ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½ выполнСния для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°Ρ€ΡƒΡˆΠ°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ DRY (Don't Repeat Yourself).

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для объСмов Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ 5000 строк ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ использовании Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Для простых Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΉ Π΄ΠΎ 1000 строк Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Одной ΠΈΠ· самых ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Ρ… ошибок являСтся Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса Π² цикличСский. Π­Ρ‚ΠΎ часто случаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² соСдинСнии, Π½ΠΎ логичСски зависят ΠΎΡ‚ контСкста.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” использованиС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ запросС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ соСдиняСтся с Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ ΠΈΡ‚ΠΎΠ³Π°ΠΌ, Ссли структура Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ совпадаСт с granularity внСшнСго запроса.

  • ❌ Ошибка: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ ВЫБРАВЬ самого Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса.
  • ❌ Ошибка: Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ консоли запросов ΠΎ нСсСтыности (нСвозмоТности выполнСния Π½Π° сторонС Π‘Π£Π‘Π”).
  • ❌ Ошибка: Π§Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС влоТСнности (> 5 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ), Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ»Π°Π½ выполнСния нСпрСдсказуСмым.

Для диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ всСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ SQL Π² настройках сСрвСра 1Π‘ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (Π’Π–). Анализ сгСнСрированного SQL-ΠΊΠΎΠ΄Π° часто сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ "споткнулся".

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии Π‘Π£Π‘Π”. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ быстро Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΈΠ»ΠΈ старой вСрсии SQL Server, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π½Π° Π½ΠΎΠ²ΠΎΠΉ вСрсии PostgreSQL ΠΈΠ»ΠΈ соврСмСнном кластСрС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПовСдСниС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° запросов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈΠ»ΠΈ Π‘Π£Π‘Π”. ПослС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ рСгрСссионноС тСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слоТных запросов.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ написанию ΠΊΠΎΠ΄Π°

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ слоТных ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ слСдуйтС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ постСпСнного услоТнСния. НачнитС с простого запроса, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Π΅Π³ΠΎ работоспособности, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ добавляйтС ΡƒΡ€ΠΎΠ²Π½ΠΈ влоТСнности, Ссли это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ максимально ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса. Если Ρ‚Π°ΠΌ трСбуСтся слоТная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈΠ»ΠΈ условная Π»ΠΎΠ³ΠΈΠΊΠ° (Π’Π«Π‘ΠžΠ  ... ΠšΠžΠ“Π”Π ... Π’ΠžΠ“Π”Π), ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ вынСсСнии этих вычислСний Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прилоТСния ΠΈΠ»ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ для объяснСния Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Π§Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π³ΠΎΠ΄Π° Π²Ρ‹ ΠΈΠ»ΠΈ ваш ΠΊΠΎΠ»Π»Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ спасут врСмя Π½Π° Π°Π½Π°Π»ΠΈΠ·.

Если Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния СдинствСнного значСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, максимальная Π΄Π°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки. ИспользованиС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (МАКБИМУМ, МИНИМУМ) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ это ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки выполнСния.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы Π² Π‘ΠšΠ” (БистСмС Компоновки Π”Π°Π½Π½Ρ‹Ρ…)?

Π”Π°, Π² Π‘ΠšΠ” ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… для Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Однако синтаксис ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈ часто ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ запросы с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, заполняСмыми Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ВлияСт Π»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос выполняСтся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ основной. Если ΠΎΠ½ обращаСтся ΠΊ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ стандартным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π‘Π£Π‘Π”. Глубокая Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π΅ создаСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ врСмя ΠΈΡ… удСрТания ΠΈΠ·-Π·Π° слоТности вычислСний.

Какова максимальная Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности Π² 1Π‘?

ВСхничСского ТСсткого ограничСния Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ влоТСнности Π² языкС запросов 1Π‘ Π½Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ рСкомСндуСтся Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 5-7 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. ΠŸΡ€ΠΈ большСй Π³Π»ΡƒΠ±ΠΈΠ½Π΅ ΠΊΠΎΠ΄ становится Π½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ, Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ нСэффСктивныС ΠΏΠ»Π°Π½Ρ‹.

Как ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запрос, Ссли ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ?

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ β€” ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ запроса (Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… скобок) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π² Консоли запросов. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ Π΄Π°Π½Π½Ρ‹Π΅ сам ΠΏΠΎ сСбС, Π±Π΅Π· влияния внСшнСго контСкста.

Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы быстрСС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 1Π‘?

НСт, Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ вСрсии (FileDB) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ слоТных Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… запросов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ с ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Π‘Π£Π‘Π”. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Π½Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с индСксами ΠΏΡ€ΠΈ слоТных Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ….