Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
GitHub Copilot pomaga deweloperom, zwłaszcza tym, którzy nie mają głębokiej wiedzy dotyczącej języka T-SQL, optymalizowanie zapytań i analizowanie wąskich gardeł wydajności bez konieczności master używania wewnętrznych baz danych. Może on podzielić złożone zapytania SQL, interpretować plany wykonywania i sugerować strategie indeksowania lub możliwości refaktoryzacji, umożliwiając deweloperom utrzymanie aplikacji w dobrej kondycji i sprawnym działaniu, jednocześnie skupiając się na dostarczaniu nowych funkcji.
Rozpocznij
Upewnij się, że masz połączenie z bazą danych i masz otwarte aktywne okno edytora z rozszerzeniem MSSQL. To połączenie umożliwia uczestnikowi czatu @mssql zrozumienie kontekstu środowiska bazy danych, umożliwiając dokładne i kontekstowe sugestie. Bez połączenia z bazą danych uczestnik czatu nie będzie miał schematu ani kontekstu danych w celu zapewnienia znaczących odpowiedzi.
W poniższych przykładach użyto przykładowej bazy danych AdventureWorksLT2022, którą można pobrać ze strony głównej Przykładów i projektów społeczności programu Microsoft SQL Server.
Aby uzyskać najlepsze wyniki, dostosuj nazwy tabel i schematów, aby dopasować je do własnego środowiska.
Upewnij się, że czat zawiera @mssql prefiks. Na przykład wpisz @mssql swoje pytanie lub polecenie. Dzięki temu uczestnik czatu rozumie, że prosi o pomoc związaną z językiem SQL.
Optymalizowanie wydajności za pomocą narzędzia GitHub Copilot
GitHub Copilot oferuje wiele sposobów, aby ułatwić deweloperom pisanie wydajnego, gotowego do produkcji kodu bazy danych bez konieczności dogłębnej wiedzy w zakresie dostrajania zapytań lub analizy planu wykonywania. Niezależnie od tego, czy tworzysz nowe funkcje, czy badasz problem z wydajnością, narzędzie GitHub Copilot może uwidocznić szczegółowe informacje, polecać optymalizacje i pomagać w restrukturyzacji zapytań, a wszystko to w ramach istniejącego przepływu pracy w programie Visual Studio Code.
Poniżej przedstawiono typowe przypadki użycia i przykłady tego, co można zadać za pośrednictwem uczestnika czatu.
Optymalizowanie zapytań
Użyj narzędzia GitHub Copilot, aby zidentyfikować nieefektywne wyniki w zapytaniach SQL lub ORM i zasugerować sposoby poprawy wydajności. Od ponownego pisania wolnych zapytań do rekomendowania indeksów lub unikania antywzorców, takich jak łączenia kartezjańskie, GitHub Copilot pomaga stosować najlepsze praktyki T-SQL i ORM w oparciu o bieżący kontekst.
- Zoptymalizuj następujące zapytanie:
SELECT *
FROM SalesLT.SalesOrderHeader
WHERE OrderDate > '2023-01-01';
- Zasugeruj ulepszenia indeksowania dla tego zapytania:
SELECT ProductID
FROM SalesLT.SalesOrderDetail
WHERE Quantity > 100;
- Zapisz ponownie to zapytanie, aby uniknąć sprzężenia kartezjańskiego. Upewnij się, że nowe zapytanie jest zgodne z najlepszymi rozwiązaniami języka T-SQL:
SELECT * FROM Customers, Order;
- Zapisz ponownie to
Prismazapytanie, aby uniknąć niepotrzebnych zagnieżdżonych zapytań i zwiększyć czytelność.
const orders = await prisma.salesOrderHeader.findMany({
where: {
orderDate: {
gt: new Date('2023-01-01')
}
}
});
Analiza planu wykonania
Plany wykonywania zawierają szczegółowy podział sposobu przetwarzania zapytań przez aparat SQL. Narzędzie GitHub Copilot może pomóc w interpretowaniu planów wykonywania, identyfikowaniu wąskich gardeł, takich jak sprzężenia zagnieżdżonych pętli, oraz sugerowaniu ulepszeń na podstawie rzeczywistych wzorców zapytań i strategii indeksowania.
Możesz użyć następującego zapytania jako przykładu, aby wygenerować plan wykonania przy użyciu opcji Szacowany/Rzeczywisty plan w rozszerzeniu MSSQL:
SELECT soh1.SalesOrderID AS OrderA,
soh2.SalesOrderID AS OrderB,
soh1.TotalDue AS TotalA,
soh2.TotalDue AS TotalB
FROM SalesLT.SalesOrderHeader AS soh1
CROSS JOIN SalesLT.SalesOrderHeader AS soh2
WHERE soh1.TotalDue < soh2.TotalDue
ORDER BY soh2.TotalDue DESC;
Wskazówka
Pamiętaj, aby uwzględnić jak najwięcej kontekstu, wybierając zapytanie z edytora i uwzględniając sqlplan plik w oknie czatu w usłudze GitHub Copilot:
- Zgodnie z planem wykonywania udostępnionym przez mojego eksperta w zakresie bazy danych następujące zapytanie używa sprzężenia zagnieżdżonej pętli, które wpływa na wydajność mojej aplikacji. Czy możesz wyjaśnić w prosty sposób, dlaczego może się to wydarzyć? Ponadto sugeruje strategie optymalizacji, które mogą poprawić wydajność zapytania.
Możesz użyć następującego zapytania jako przykładu, aby wygenerować plan wykonania przy użyciu opcji Szacowany/Rzeczywisty plan w rozszerzeniu MSSQL:
SELECT c1.CustomerID,
c1.LastName,
c2.CustomerID AS MatchingCustomerID,
c2.LastName AS MatchingLastName
FROM SalesLT.Customer AS c1
INNER JOIN SalesLT.Customer AS c2
ON c1.LastName = c2.LastName
AND c1.CustomerID <> c2.CustomerID
OPTION (LOOP JOIN);
Wskazówka
Pamiętaj, aby uwzględnić jak najwięcej kontekstu, wybierając zapytanie z edytora i uwzględniając sqlplan plik w oknie czatu w usłudze GitHub Copilot:
- Wyjaśnij plan wykonywania dla tego zapytania, które wykonuje sprzężenie z filtrem na TotalDue.
SELECT c.CustomerID,
c.FirstName,
c.LastName,
soh.SalesOrderID,
soh.TotalDue
FROM SalesLT.Customer AS c
INNER JOIN SalesLT.SalesOrderHeader AS soh
ON c.CustomerID = soh.CustomerID
WHERE soh.TotalDue > 500;
Restrukturyzacja zapytań
Restrukturyzacja zapytań przy użyciu wspólnych wyrażeń tabel (CTE) może zwiększyć czytelność i łatwość utrzymania, szczególnie w przypadku złożonej logiki lub zagnieżdżonych podzapytaniach. GitHub Copilot może pomóc w ponownym zapisaniu istniejących zapytań, aby używać CTEs, zachowując ich intencję i poprawiając przejrzystość.
- Ponownie zapisz to zapytanie przy użyciu typowych wyrażeń tabeli (
CTEs), aby zwiększyć przejrzystość:
SELECT *
FROM (SELECT ProductID,
SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductID) AS SubQuery;
- Ponownie zapisz następujące zapytanie przy użyciu języka CTE (wspólnego wyrażenia tabeli), aby zwiększyć czytelność i łatwość konserwacji:
SELECT soh.CustomerID,
COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader AS soh
WHERE soh.OrderDate > '2022-01-01'
GROUP BY soh.CustomerID
HAVING COUNT(*) > 5;
- Użyj CTE, aby oddzielić logikę agregacji od warunku filtru w tym zapytaniu:
SELECT ProductID,
AVG(UnitPrice) AS AvgPrice
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(UnitPrice) > 50;
scenariusze wydajności Code-First
Podczas pracy z ORM-ami, takimi jak Entity Framework, Prisma lub Sequelize, wydajność może się pogorszyć, jeśli zapytania nie są zoptymalizowane. GitHub Copilot pomaga wykrywać i rozwiązywać problemy, takie jak brakujące indeksy, nieefektywne filtrowanie i problemy N+1 w przepływach pracy z kodem.
- Jak w projekcie Prisma zapewnić, że zapytania filtrujące według
OrderDatewSalesOrderHeaderskutecznie wykorzystują indeksy? - Jak analizować i optymalizować zapytanie LINQ, które pobiera 10 pierwszych klientów według łącznej wartości zamówienia, za pomocą platformy Entity Framework Core?
- Jak przebudować kwerendę w Sequelize, która pobiera historię zamówień wraz ze szczegółami produktów, aby zminimalizować problemy z zapytaniami N+1?
Informacja zwrotna: Asystent optymalizatora zapytań
Aby pomóc nam udoskonalić i ulepszyć narzędzie GitHub Copilot dla rozszerzenia MSSQL, użyj następującego szablonu problemu GitHub, aby przesłać swoją opinię: GitHub Copilot Feedback
Podczas przesyłania opinii należy wziąć pod uwagę następujące kwestie:
- Przetestowane scenariusze — daj nam znać obszary, na przykład tworzenie schematu, generowanie zapytań, zabezpieczenia, lokalizację.
- Co się udało — opisz wszelkie doświadczenia, które przebiegły sprawnie, były pomocne lub przerosły twoje oczekiwania.
- Problemy lub błędy — obejmują wszelkie problemy, niespójności lub mylące zachowania. Zrzuty ekranu lub nagrania ekranu są szczególnie przydatne!
- Sugestie dotyczące poprawy — podziel się pomysłami na poprawę użyteczności, rozszerzaniem zasięgu lub ulepszaniem odpowiedzi w usłudze GitHub Copilot.
Treści powiązane
- Rozszerzenie GitHub Copilot for MSSQL dla programu Visual Studio Code
- Szybki start: korzystanie z sugestii dotyczących czatu i wbudowanego rozwiązania GitHub Copilot (wersja zapoznawcza)
- Szybki start: generowanie kodu (wersja zapoznawcza)
- Szybki start: korzystanie z Eksploratora schematów i projektanta (wersja zapoznawcza)
- Szybki start: korzystanie z narzędzia Smart Query Builder (wersja zapoznawcza)
- Szybki start: korzystanie z narzędzia objaśniającego logikę biznesową (wersja zapoznawcza)
- Szybki start: Analizator zabezpieczeń (wersja zapoznawcza)
- Szybki start: pomocnik lokalizacji i formatowania (wersja zapoznawcza)
- Szybki start: generowanie danych na potrzeby testowania i pozorowania (wersja zapoznawcza)
- Ograniczenia i znane problemy