Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
GitHub Copilot ayuda a los desarrolladores, especialmente a aquellos que no tienen conocimientos profundos de T-SQL, a optimizar consultas y analizar cuellos de botella de rendimiento sin necesidad de entender los entresijos internos de las bases de datos. Puede desglosar SQL complejo, interpretar planes de ejecución y sugerir estrategias de indexación o oportunidades de refactorización, lo que permite a los desarrolladores mantener sus aplicaciones funcionales y eficaces al tiempo que permanecen centrados en la entrega de características.
Comienza
Asegúrese de que está conectado a una base de datos y de que tiene abierta una ventana del editor activa con la extensión MSSQL. Esta conexión permite al participante del @mssql
chat comprender el contexto del entorno de base de datos, lo que permite sugerencias precisas y compatibles con el contexto. Sin una conexión de base de datos, el participante del chat no tendrá el esquema ni el contexto de datos para proporcionar respuestas significativas.
En los ejemplos siguientes se usa la AdventureWorksLT2022
base de datos de ejemplo, que puede descargar desde la página principal Ejemplos de Microsoft SQL Server y Proyectos de comunidad .
Para obtener los mejores resultados, ajuste los nombres de tabla y esquema para que coincidan con su propio entorno.
Asegúrese de que el chat incluye el @mssql
prefijo. Por ejemplo, escriba @mssql
seguido de su pregunta o indicador. Esto garantiza que el participante del chat comprenda que solicita ayuda relacionada con SQL.
Optimización del rendimiento con GitHub Copilot
GitHub Copilot ofrece varias maneras de ayudar a los desarrolladores a escribir código de base de datos eficaz y listo para producción sin necesidad de experiencia profunda en el ajuste de consultas o el análisis del plan de ejecución. Tanto si va a crear nuevas características como si investiga un problema de rendimiento, GitHub Copilot puede exponer información detallada, recomendar optimizaciones y ayudar a reestructurar las consultas, todo ello dentro del flujo de trabajo existente en Visual Studio Code.
Estos son casos de uso comunes y ejemplos de lo que puede preguntar a través del participante del chat.
Optimización de consultas
Use GitHub Copilot para identificar ineficacias en consultas SQL o ORM y sugerir formas de mejorar el rendimiento. Desde la reescritura de consultas lentas para recomendar índices o evitar antipatrones como combinaciones cartesianas, GitHub Copilot le ayuda a aplicar procedimientos recomendados de T-SQL y ORM en función del contexto actual.
- Optimice la consulta siguiente:
SELECT *
FROM SalesLT.SalesOrderHeader
WHERE OrderDate > '2023-01-01';
- Sugerir mejoras de indexación para esta consulta:
SELECT ProductID
FROM SalesLT.SalesOrderDetail
WHERE Quantity > 100;
- Vuelva a escribir esta consulta para evitar una combinación cartesiana. Asegúrese de que la nueva consulta sigue los procedimientos recomendados de T-SQL:
SELECT * FROM Customers, Order;
- Vuelva a escribir esta
Prisma
consulta para evitar selecciones anidadas innecesarias y mejorar la legibilidad:
const orders = await prisma.salesOrderHeader.findMany({
where: {
orderDate: {
gt: new Date('2023-01-01')
}
}
});
Análisis del plan de ejecución
Los planes de ejecución proporcionan un desglose detallado de cómo procesa el motor de SQL las consultas. GitHub Copilot puede ayudarle a interpretar los planes de ejecución, identificar cuellos de botella, como uniones por bucles anidados, y sugerir mejoras basadas en patrones de consulta reales y estrategias de indexación.
Puede usar la consulta siguiente como ejemplo para generar el plan de ejecución mediante la opción Plan estimado/real de la extensión 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;
Sugerencia
Asegúrese de incluir tanto contexto como sea posible; para ello, seleccione la consulta en el editor e incluya el sqlplan
archivo en la ventana de chat de GitHub Copilot:
- Según el plan de ejecución compartido por mi experto en base de datos, la siguiente consulta usa una combinación de bucle anidada que afecta al rendimiento de mi aplicación. ¿Puede explicarlo en términos simples por qué podría suceder esto? Además, sugiere estrategias de optimización que podrían mejorar el rendimiento de la consulta.
Puede usar la consulta siguiente como ejemplo para generar el plan de ejecución mediante la opción Plan estimado/real de la extensión 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);
Sugerencia
Asegúrese de incluir tanto contexto como sea posible; para ello, seleccione la consulta en el editor e incluya el sqlplan
archivo en la ventana de chat de GitHub Copilot:
- Explicar el plan de ejecución de esta consulta que realiza una combinación con un filtro en 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;
Reestructuración de consultas
La reestructuración de consultas mediante expresiones de tabla comunes (CTE) puede mejorar la legibilidad y el mantenimiento, especialmente para las subconsultas complejas o lógicas anidadas. GitHub Copilot puede ayudar a reescribir las consultas existentes para usar CTE a la vez que conserva la intención y mejora la claridad.
- Vuelva a escribir esta consulta mediante expresiones de tabla comunes (
CTEs
) para mejorar la claridad:
SELECT *
FROM (SELECT ProductID,
SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductID) AS SubQuery;
- Vuelva a escribir la siguiente consulta mediante un CTE (expresión de tabla común) para mejorar la legibilidad y el mantenimiento:
SELECT soh.CustomerID,
COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader AS soh
WHERE soh.OrderDate > '2022-01-01'
GROUP BY soh.CustomerID
HAVING COUNT(*) > 5;
- Use un CTE para separar la lógica de agregación de la condición de filtro en esta consulta:
SELECT ProductID,
AVG(UnitPrice) AS AvgPrice
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(UnitPrice) > 50;
Escenarios de rendimiento de Code-First
Al trabajar con ORM como Entity Framework, Prisma o Sequelize, el rendimiento puede degradarse si las consultas no están optimizadas. GitHub Copilot ayuda a detectar y resolver problemas como los índices que faltan, el filtrado ineficaz y los problemas de N+1 en los flujos de trabajo de código primero.
- En un proyecto Prisma, ¿cómo se aseguraría de que las consultas filtradas por
OrderDate
enSalesOrderHeader
usan índices de forma eficaz? - Con Entity Framework Core, ¿cómo puede analizar y optimizar una consulta LINQ que recupera los 10 clientes principales por valor total de pedido?
- En Sequelize, ¿cómo reestructura una consulta que captura el historial de pedidos con detalles del producto para minimizar los problemas de consulta de N+1?
Comentarios: Asistente del Optimizador de Consultas
Para ayudarnos a refinar y mejorar GitHub Copilot para la extensión MSSQL, use la siguiente plantilla de problema de GitHub para enviar sus comentarios: Comentarios de GitHub Copilot
Al enviar comentarios, considere la posibilidad de incluir:
- Escenarios probados : háganos saber en qué áreas se centraba, por ejemplo, la creación de esquemas, la generación de consultas, la seguridad, la localización.
- Lo que funcionó bien : describa cualquier experiencia que se sintiera suave, útil o superara sus expectativas.
- Problemas o errores : incluya cualquier problema, incoherencias o comportamientos confusos. Capturas de pantalla o grabaciones de pantalla son especialmente útiles.
- Sugerencias para mejorar : comparta ideas para mejorar la facilidad de uso, expandir la cobertura o mejorar las respuestas de GitHub Copilot.
Contenido relacionado
- Extensión de GitHub Copilot para MSSQL de Visual Studio Code
- Inicio rápido: Uso de chat y sugerencias en línea de GitHub Copilot (Vista previa)
- Inicio rápido: Generación de código (versión preliminar)
- Inicio rápido: Uso del Explorador de esquemas y el diseñador (versión preliminar)
- Inicio rápido: Uso del Generador de consultas inteligentes (versión preliminar)
- Inicio rápido: Uso del explicador de lógica de negocios (versión preliminar)
- Inicio rápido: Analizador de seguridad (versión preliminar)
- Inicio rápido: Asistente de localización y formato (versión preliminar)
- Inicio rápido: Generación de datos para pruebas y simulación (versión preliminar)
- Limitaciones y problemas conocidos