Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A GitHub Copilot segít a fejlesztőknek optimalizálni a lekérdezéseket és elemezni a teljesítmény szűk keresztmetszeteit anélkül, hogy szakértelemre van szükségük az adatbázis belső elemeiben, különösen a mély Transact-SQL (T-SQL) szakértelemmel nem rendelkező fejlesztők számára. A GitHub Copilot képes lebontani az összetett SQL-t, értelmezni a végrehajtási terveket, és indexelési stratégiákat vagy újrabontási lehetőségeket javasolni. A fejlesztők továbbra is működőképesen és teljesíthetően használhatják az alkalmazásokat, miközben a funkciók kézbesítésére összpontosítanak.
Első lépések
Győződjön meg arról, hogy csatlakozik egy adatbázishoz, és meg van nyitva egy aktív szerkesztőablak az MSSQL kiterjesztéssel. Amikor csatlakozik, a @mssql csevegés résztvevői megértik az adatbázis-környezet kontextusát, és pontos, környezettudatos javaslatokat tehetnek. Ha nem csatlakozik adatbázishoz, a csevegés résztvevője nem rendelkezik a sémával vagy az adatkörnyezettel, hogy értelmes válaszokat adjon.
Az alábbi példák a AdventureWorksLT2022 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
A legjobb eredmény érdekében módosítsa a táblázat- és sémaneveket a saját környezetének megfelelően.
Győződjön meg arról, hogy a csevegés tartalmazza az @mssql előtagot. Például írja be @mssql, majd adja meg a kérdést vagy felkérést. Ez az előtag biztosítja, hogy a csevegés résztvevője megértse, hogy SQL-hez kapcsolódó segítséget kér.
Teljesítmény optimalizálása a GitHub Copilottal
A GitHub Copilot számos módszert kínál arra, hogy a fejlesztők nagy teljesítményű, éles üzemre kész adatbáziskódot írjanak anélkül, hogy mélyreható szakértelemre van szükségük a lekérdezések finomhangolásában vagy a végrehajtási terv elemzésében. Akár új funkciókat hoz létre, akár teljesítményproblémát vizsgál, a GitHub Copilot elemzéseket biztosít, optimalizálást javasol, és segít a lekérdezések szerkezetének átalakításában. Ezeket a képességeket a Meglévő munkafolyamatban a Visual Studio Code-ban érheti el.
Az alábbi szakaszok a gyakori használati eseteket és példákat ismertetik arra, hogy mit kérdezhet meg a csevegés résztvevőin keresztül.
Lekérdezések optimalizálása
A GitHub Copilot használatával azonosíthatja az SQL- vagy objektum-relációs leképezési (ORM-) lekérdezések hatékonysági problémáit, és javaslatot tesz a teljesítmény javítására. A GitHub Copilot segít a T-SQL és az ORM ajánlott eljárásainak alkalmazásában, a lassú lekérdezések újraírásától az indexek ajánlásán át az olyan antiminták elkerüléséig, mint a Cartesian-illesztések, a jelenlegi környezet alapján.
Egyszerű példa
Optimize the following query:
SELECT *
FROM SalesLT.SalesOrderHeader
WHERE OrderDate > '2023-01-01';
Indexjavítási példa
Suggest indexing improvements for this query:
SELECT ProductID
FROM SalesLT.SalesOrderDetail
WHERE Quantity > 100;
Csatlakozz a fejlesztési példához
Rewrite this query to avoid a Cartesian join. Make sure the new query follows T-SQL best practices:
SELECT * FROM Customers, Order;
Beágyazott kiválasztási példa
Rewrite this Prisma query to avoid unnecessary nested selects and improve readability:
const orders = await prisma.salesOrderHeader.findMany({
where: {
orderDate: {
gt: new Date('2023-01-01')
}
}
});
Végrehajtási terv elemzése
A végrehajtási tervek részletes leírást nyújtanak arról, hogy az SQL-motor hogyan dolgozza fel a lekérdezéseket. A GitHub Copilot segíthet értelmezni a végrehajtási terveket, azonosítani a szűk keresztmetszeteket, például a beágyazott hurokcsatlakozásokat, és valós lekérdezési mintákon és indexelési stratégiákon alapuló fejlesztéseket javasolni.
Példaként az alábbi lekérdezést használhatja a végrehajtási terv létrehozásához az MSSQL-bővítmény Becsült/Tényleges terv lehetőségével:
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;
A lehető legtöbb kontextust foglalja bele a szerkesztő lekérdezésének kiválasztásával, és a sqlplan fájl belefoglalásával a GitHub Copilot csevegőablakában, ahogyan az a képernyőképen látható.
According to the execution plan shared by my database expert, the following query is using a nested loop join which is affecting the performance of my app. Can you explain in simple terms why this might be happening? Additionally, suggest optimization strategies that could improve the query's performance.
Példaként az alábbi lekérdezést használhatja a végrehajtási terv létrehozásához az MSSQL-bővítmény Becsült/Tényleges terv lehetőségével:
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);
A lehető legtöbb kontextust foglalja bele a szerkesztő lekérdezésének kiválasztásával, és a sqlplan fájl belefoglalásával a GitHub Copilot csevegőablakában, ahogyan az a képernyőképen látható.
Explain the execution plan for this query that performs a join with a filter on 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;
Lekérdezések szerkezetátalakítása
A gyakori táblakifejezéseket (CTE-k) használó lekérdezések átszervezése megkönnyíti a lekérdezések olvasását és karbantartását. Ez a megközelítés különösen hasznos összetett logikához vagy beágyazott lekérdezésekhez. A GitHub Copilot segíthet átírni a meglévő lekérdezéseket a CTE-k használatára az eredeti szándék megőrzése és az egyértelműség javítása mellett.
Belső kijelölés a CTE-példához
Rewrite this query using common table expressions (CTEs) to improve clarity:
SELECT *
FROM (SELECT ProductID,
SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductID) AS SubQuery;
HAVING záradék CTE példában
Rewrite the following query using a CTE (common table expression) to improve readability and maintainability:
SELECT soh.CustomerID,
COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader AS soh
WHERE soh.OrderDate > '2022-01-01'
GROUP BY soh.CustomerID
HAVING COUNT(*) > 5;
Aggregációs záradék a CTE-példához
Use a CTE to separate the aggregation logic from the filter condition in this query:
SELECT ProductID,
AVG(UnitPrice) AS AvgPrice
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(UnitPrice) > 50;
Kód-először teljesítmény forgatókönyvek
Ha olyan ORM-ekkel dolgozik, mint az Entity Framework, a Prisma vagy a Sequelize, a teljesítmény csökkenhet, ha nem optimalizálja a lekérdezéseket. A GitHub Copilot segít észlelni és megoldani az olyan problémákat, mint a hiányzó indexek, a nem hatékony szűrés és az N+1 problémák a kódelső munkafolyamatokban.
Prisma-példa
In a Prisma project, how would you ensure that queries filtering by `OrderDate` in `SalesOrderHeader` are using indexes effectively?
Entity Framework Core példa
Using Entity Framework Core, how can you analyze and optimize a LINQ query that retrieves the top 10 customers by total order value?
Példa szekvenálás
In Sequelize, how do you restructure a query that fetches order history with product details to minimize N+1 query issues?
Ossza meg tapasztalatait
Az MSSQL-bővítményHez tartozó GitHub Copilot pontosításához és fejlesztéséhez használja a következő GitHub-problémasablont a visszajelzés elküldéséhez: GitHub Copilot Feedback
Visszajelzés küldésekor fontolja meg a következőket:
Tesztelt forgatókönyvek: Tudassa velünk, hogy mely területekre összpontosított, például sémalétrehozásra, lekérdezésgenerálásra, biztonságra, honosításra.
Ami jól működött: Ismertesse azokat a tapasztalatokat, amelyek zökkenőmentesnek, hasznosnak mutattak, vagy amelyek meghaladták az Ön elvárásait.
Problémák vagy hibák: Tartalmazzon bármilyen problémát, következetlenséget vagy zavaró viselkedést. A képernyőképek és a képernyőfelvételek különösen hasznosak.
Fejlesztési javaslatok: Ötletek megosztása a használhatóság javítására, a lefedettség bővítésére vagy a GitHub Copilot válaszainak javítására.
Kapcsolódó tartalom
- GitHub Copilot for MSSQL-bővítmény a Visual Studio Code-hoz
- Rövid útmutató: Csevegés és beágyazott GitHub Copilot-javaslatok használata
- Rövid útmutató: Kód létrehozása
- Rövid útmutató: A sémakezelő és a tervező használata
- Rövid útmutató: Az intelligens lekérdezésszerkesztő használata
- Rövid útmutató: Az üzleti logika magyarázójának használata
- Rövid útmutató: Biztonsági elemző
- Rövid útmutató: Honosítási és formázási eszköz
- Rövid útmutató: Adatok létrehozása teszteléshez és modellezéshez
- Korlátozások és ismert problémák