Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
GitHub Copilot, özellikle derin Transact-SQL (T-SQL) uzmanlığı olmayan geliştiriciler olmak üzere, geliştiricilerin veritabanı iç işlerinde uzmanlığa ihtiyaç duymadan sorguları iyileştirmelerine ve performans sorunlarını analiz etmelerine yardımcı olur. GitHub Copilot karmaşık SQL'i ayırabilir, yürütme planlarını yorumlayabilir ve dizin oluşturma stratejileri veya yeniden düzenleme fırsatları önerebilir. Geliştiriciler, özellik teslimi konusunda odaklanarak uygulamalarını işlevsel ve performanslı tutabilir.
Başlayın
Bir veritabanına bağlı olduğunuzdan ve MSSQL uzantısıyla etkin bir düzenleyici penceresinin açık olduğundan emin olun. Bu bağlantı, sohbet katılımcısının @mssql veritabanı ortamınızın bağlamını anlamasına olanak tanıyarak doğru ve bağlama duyarlı öneriler sağlar. Veritabanı bağlantısı olmadan, sohbet katılımcısının anlamlı yanıtlar sağlamak için şeması veya veri bağlamı olmaz.
Aşağıdaki örneklerde, AdventureWorksLT2022 giriş sayfasından indirebileceğiniz örnek veritabanı kullanılır.
En iyi sonuçları elde etmek için tablo ve şema adlarını kendi ortamınızla eşleşecek şekilde ayarlayın.
Sohbetin ön ekini içerdiğinden @mssql emin olun. Örneğin, @mssql yazdıktan sonra sorunuzu veya isteminizi yazın. Bu, sohbet katılımcısının SQL ile ilgili yardım istediğinizi anlamasını sağlar.
GitHub Copilot ile performansı iyileştirme
GitHub Copilot, geliştiricilerin sorgu ayarlama veya yürütme planı analizinde derin uzmanlık gerektirmeden yüksek performanslı, üretime hazır veritabanı kodu yazmasına yardımcı olmak için çeşitli yollar sunar. İster yeni özellikler oluştururken ister bir performans sorununu araştırırken GitHub Copilot, Visual Studio Code'daki mevcut iş akışınızda içgörüleri ortaya çıkarabilir, iyileştirmeler önerebilir ve sorguları yeniden yapılandırmaya yardımcı olabilir.
Sohbet katılımcısı aracılığıyla sorabileceğiniz yaygın kullanım örnekleri ve örnekler aşağıda verilmiştir.
Sorguları iyileştirme
SQL veya nesne ilişkisel eşleme (ORM) sorgularındaki verimsizlikleri belirlemek ve performansı geliştirmenin yollarını önermek için GitHub Copilot'ı kullanın. GitHub Copilot, yavaş sorguları yeniden yazmaktan dizin önermeye veya kartezyen birleşimleri gibi desenleri önlemeye kadar geçerli bağlamınıza göre T-SQL ve ORM için en iyi yöntemleri uygulamanıza yardımcı olur.
Temel örnek
Optimize the following query:
SELECT *
FROM SalesLT.SalesOrderHeader
WHERE OrderDate > '2023-01-01';
Dizin geliştirme örneği
Suggest indexing improvements for this query:
SELECT ProductID
FROM SalesLT.SalesOrderDetail
WHERE Quantity > 100;
Katılma iyileştirme örneği
Rewrite this query to avoid a Cartesian join. Make sure the new query follows T-SQL best practices:
SELECT * FROM Customers, Order;
İç içe seçme örneği
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')
}
}
});
Yürütme planı analizi
Yürütme planları, SQL altyapısının sorguları nasıl işlediğine ilişkin ayrıntılı bir döküm sağlar. GitHub Copilot, yürütme planlarını yorumlamanıza, iç içe döngü birleşimleri gibi performans sorunlarını belirlemenize ve gerçek dünya sorgu desenlerine ve dizin oluşturma stratejilerine dayalı iyileştirmeler önermenize yardımcı olabilir.
MSSQL uzantısındaki Tahmini/Gerçek plan seçeneğini kullanarak yürütme planını oluşturmak için örnek olarak aşağıdaki sorguyu kullanabilirsiniz:
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;
Düzenleyiciden sorguyu seçerek ve sqlplan dosyasını GitHub Copilot sohbet penceresine ekleyerek, bu ekran görüntüsünde gösterildiği gibi mümkün olduğunca fazla bağlam sağlayın.
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.
MSSQL uzantısındaki Tahmini/Gerçek plan seçeneğini kullanarak yürütme planını oluşturmak için örnek olarak aşağıdaki sorguyu kullanabilirsiniz:
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);
Düzenleyiciden sorguyu seçerek ve ekran görüntüsünde gösterildiği gibi sqlplan dosyasını GitHub Copilot sohbet penceresine ekleyerek mümkün olduğunca çok bağlam ekleyin.
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;
Sorgu yeniden yapılandırma
Sık kullanılan tablo ifadelerini (CTE) kullanarak sorguları yeniden yapılandırmak, özellikle karmaşık mantık veya iç içe alt sorgular için okunabilirliği ve sürdürülebilirliği geliştirebilir. GitHub Copilot, amacı korurken ve netliği artırırken CTES kullanmak için mevcut sorgularınızı yeniden yazmaya yardımcı olabilir.
İç seçimden CTE'ye örnek
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 koşulunu CTE ile kullanma örneği
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;
CTE örneğine toplama ifadesi
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;
Kod öncelikli performans senaryoları
Entity Framework, Prisma veya Sequelize gibi ORM'lerle çalışırken, sorgular iyileştirilmezse performans düşebilir. GitHub Copilot, kod öncelikli iş akışlarında eksik dizinler, verimsiz filtreleme ve N+1 sorunları gibi sorunları algılamaya ve çözmeye yardımcı olur.
Prisma örneği
In a Prisma project, how would you ensure that queries filtering by `OrderDate` in `SalesOrderHeader` are using indexes effectively?
Entity Framework Core örneği
Using Entity Framework Core, how can you analyze and optimize a LINQ query that retrieves the top 10 customers by total order value?
Sırala örneği
In Sequelize, how do you restructure a query that fetches order history with product details to minimize N+1 query issues?
Deneyiminizi paylaşma
MSSQL uzantısı için GitHub Copilot'ı geliştirmemize ve geliştirmemize yardımcı olmak için aşağıdaki GitHub sorun şablonunu kullanarak geri bildiriminizi gönderin: GitHub Copilot Geri Bildirimi
Geri bildirim gönderirken şunları dahil etmeyi göz önünde bulundurun:
Test edilen senaryolar : Şema oluşturma, sorgu oluşturma, güvenlik, yerelleştirme gibi hangi alanlara odaklandığınız konusunda bize bilgi verin.
Neler iyi çalıştı - Sorunsuz geçen, yardımcı olan veya beklentilerinizi aşan deneyimleri açıklayın.
Sorunlar veya hatalar : Tüm sorunları, tutarsızlıkları veya kafa karıştırıcı davranışları içerir. Ekran görüntüleri veya ekran kayıtları özellikle yararlıdır.
İyileştirme önerileri : Kullanılabilirliği artırma, kapsamı genişletme veya GitHub Copilot'un yanıtlarını geliştirmeyle ilgili fikirleri paylaşın.
İlgili içerik
- Visual Studio Code için MSSQL uzantısı için GitHub Copilot
- Hızlı Başlangıç: Sohbet ve satır içi GitHub Copilot önerilerini kullanma
- Hızlı Başlangıç: Kod oluşturma
- Hızlı Başlangıç: Şema gezginini ve tasarımcıyı kullanma
- Hızlı Başlangıç: Akıllı sorgu oluşturucuyu kullanma
- Hızlı Başlangıç: İş mantığı açıklayıcısını kullanma
- Hızlı Başlangıç: Güvenlik çözümleyicisi
- Hızlı Başlangıç: Yerelleştirme ve biçimlendirme yardımcısı
- Hızlı Başlangıç: Test ve mock için veri oluşturma
- Sınırlamalar ve bilinen sorunlar