ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ вопросов ❓ Π½Π° собСсСдовании Π² C# 🍧

ΠžΠ±Π·ΠΎΡ€ вопросов ΠΏΠΎ языка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ C# ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ NET


Project maintained by Dvurechensky-Docs Hosted on GitHub Pages — Theme by mattgraham

πŸ” Как Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы ΠΊ Π‘Π”?

Typing SVG

Static Badge

✨ ОглавлСниС

⬆ Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π³Π»Π°Π²Π½ΠΎΠΉ


1️⃣ ΠŸΠΎΡ‡Π΅ΠΌΡƒ диагностика ΠΈ оптимизация Π²Π°ΠΆΠ½Ρ‹

Π”Π°ΠΆΠ΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° C# Π½Π΅ спасёт, Ссли SQL Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ:


2️⃣ Π­Ρ‚Π°ΠΏΡ‹ диагностики

a) Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов

var sql = context.Users.Where(u => u.IsActive).ToQueryString();
Console.WriteLine(sql);

b) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ»Π°Π½ΠΎΠ² выполнСния (Execution Plan)


c) Анализ индСксов


d) Π—Π°ΠΌΠ΅Ρ€Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

var sw = Stopwatch.StartNew();
var data = await context.Users.AsNoTracking().ToListAsync();
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);

e) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…


3️⃣ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов

a) Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° сСрвСрС

// ΠŸΠ»ΠΎΡ…ΠΎ
var data = context.Users.ToList().Where(u => u.IsActive);
// Π₯ΠΎΡ€ΠΎΡˆΠΎ
var data = context.Users.Where(u => u.IsActive).ToList();

b) ΠŸΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ

var data = context.Users
                  .Where(u => u.IsActive)
                  .Select(u => new { u.Id, u.Name })
                  .ToList();

c) ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ

var users = await context.Users.Where(u => u.IsActive).ToListAsync();

d) Batch/пакСтная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°


e) ИспользованиС индСксов ΠΈ оптимизация JOIN


f) ΠŸΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡ

var page = context.Users
                  .OrderBy(u => u.Id)
                  .Skip((page-1)*pageSize)
                  .Take(pageSize)
                  .ToList();

g) ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅


h) ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство соСдинСний


i) ИспользованиС инструмСнтов профилирования


⬆ Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π³Π»Π°Π²Π½ΠΎΠΉ

✨Dvurechensky✨