Работа с SQL с помощью GitHub Copilot

Завершено

GitHub Copilot можно использовать для взаимодействия со всеми типами кода, включая взаимодействие с популярными языками программирования и предоставление возможности написания, отладки и оптимизации кода SQL.

GitHub Copilot может выполнять следующие задачи, связанные с кодом SQL:

  • Объяснение запроса: используйте Copilot, чтобы объяснить сложные запросы SQL, чтобы лучше понять их логику и структуру.
  • Оптимизация запросов. Попросите Copilot предложить оптимизировать медленные или неэффективные запросы, такие как удаление ненужных JOIN, оптимизация SELECT DISTINCT или рефакторинг вложенных запросов.
  • Рефакторинг запросов: запросите Copilot переписать запросы для улучшения читаемости и сопровождения, например, замены CROSS JOIN или упрощения вложенных запросов.
  • Создание запросов: Позвольте Copilot сгенерировать новые запросы SQL на основе ваших требований к данным, такие как операторы SELECT, INSERT, UPDATE или DELETE.
  • Проверка данных. Используйте Copilot для записи запросов SQL, которые проверяют целостность данных или проверяют определенные условия в базе данных.
  • Исследование схемы. Попросите Copilot помочь вам написать запросы, которые изучают или документирует схему базы данных (например, список таблиц, столбцов или связей).
  • Создание тестов: запрос copilot для создания тестов или утверждений на основе SQL для проверки результатов запроса или состояния базы данных.
  • Отладка ошибок: попросите Copilot помочь отладить ошибки SQL или предложить исправления для распространенных проблем (например, синтаксические ошибки, отсутствующие индексы).
  • Генерация запросов: пусть Copilot создаёт подсказки или шаблоны для создания высокопроизводительных запросов с нуля.

GitHub Copilot обеспечивает лучшие результаты при более конкретных запросах. Если вы предоставляете общие запросы, скорее всего, вы получите общие ответы. Если вы предоставляете более подробные сведения в запросах и задаете более подробные вопросы, скорее всего, вы получите подробные ответы.

Например, можно использовать GitHub Copilot для создания таблицы, которая включала столбцы для имени, фамилии, даты рождения, любимого фильма и имени питомца, вводя следующий запрос:

@workspace предоставьте мне код SQL, чтобы создать таблицу, включающую столбцы для имени, фамилии, даты рождения, избранного фильма и имени домашних животных

Снимок экрана: запрос GitHub Copilot, связанный с созданием таблицы в SQL.

Общие сведения о приложении, включающее SQL

Например, если вы открыли пространство кода и вам было представлено приложение, включающее код SQL, вы могли бы запросить GitHub Copilot следующим образом, чтобы узнать больше о проекте:

@workspace Кратко объясните структуру этого проекта. Что делать, чтобы запустить его?

Снимок экрана: ответ GitHub Copilot на запрос о структуре проекта.

Общие сведения о коде SQL

Вы можете использовать запрос /explain для понимания конкретного кода. Например, проект может содержать файл с именем complex.sql, который содержит запрос, выполняемый в приложении. Чтобы понять содержимое complex.sql, его можно выбрать в панели обозревателя GitHub Codespaces, а затем воспользоваться командой /explain в чате.

Снимок экрана: содержимое, созданное с помощью ИИ компьютера, может быть неверным.

Вместо выбора всего файла вы можете выбрать разделы кода и попросить GitHub Copilot предоставить подробные сведения об этих разделах.

Оптимизация и рефакторинг запросов SQL

Иногда вам предоставляются запросы, которые работают медленно или неэффективно, так как содержат ненужные объединения, запрашиваемые таблицы не имеют индексов или включают избыточные вложенные подзапросы. Используя GitHub Copilot, вы можете выбрать запрос и задать оптимизации, которые могут повысить производительность.

Аналогичным образом можно запросить Copilot переписать запросы для повышения удобочитаемости или удобства обслуживания, запрашивая Copilot предоставить комментарии, чтобы объяснить функциональные возможности для будущих разработчиков, которые, возможно, потребуется просмотреть код.

Пример запроса может быть таким:

"Добавьте подробные комментарии в файл complex.sql, объясняя назначение и функциональные возможности каждого предложения CTE, предложения SQL и вычисления. Необходимо описать, что делает каждый раздел запроса, включая извлечение года, вычисление скользящего среднего, логику коэффициента производительности и смысл каждой инструкции CASE. Примечания должны сделать его простым для тех, кто не знаком с файлом, чтобы понять логику и намерение всего запроса".

Проверка целостности данных

Используйте Copilot для записи запросов SQL, которые проверяют целостность данных или проверяют определенные условия в базе данных. Например, можно предложить GitHub Copilot выполнить один из четырех типов проверок целостности:

  • Уникальность и повторяющиеся проверки
  • Целостность ссылок (нарушения внешнего ключа)
  • Целостность домена (значения в ожидаемых диапазонах)
  • Проверки бизнес-правил (нарушения пользовательской логики)

Примером может быть запрос:

"Напишите SQL-запрос, который проверяет наличие потерянных внешних ключей между таблицами Orders и Customers".

Документация по схеме базы данных

Вы можете попросить GitHub Copilot помочь вам написать запросы, которые изучают или документируют схему базы данных. Предоставив GitHub Copilot контекст базы данных, с которым вы работаете, вы сможете определить, можно ли оптимизировать код, взаимодействующий с этой базой данных. Хотя GitHub Copilot не глубоко анализирует планы выполнения запросов, но понимание контекста базы данных SQL, с которым вы взаимодействуете, это может предоставить лучшие советы.

Создание тестов SQL

Вы можете запросить, чтобы GitHub Copilot создавал тесты или утверждения на основе SQL, чтобы проверить результаты запроса или состояние базы данных. Copilot может предложить соответствующие платформы тестирования на основе типа проекта. Чтобы настроить среду тестирования, введите команду /setupTests в поле ввода чата и следуйте инструкциям GitHub Copilot, чтобы настроить проект.

GitHub Copilot поможет вам написать тесты для кода приложения, создав тестовый код, охватывающий базу кода. Сюда входят модульные тесты, сквозные тесты и тесты для крайних случаев.

Отладка ошибок SQL

Вы можете попросить GitHub Copilot помочь отладить ошибки SQL или предложить исправления распространенных проблем. Например, можно выбрать файл или блок кода и попросить GitHub Copilot найти и исправить все синтаксические ошибки.

Используя GitHub Copilot для получения полной схемы таблицы и индексов, вы можете затем создать репрезентативные запросы к таблицам и предложить дополнительные индексы, что может повысить производительность.

Создание запроса GitHub Copilot

Вы можете использовать GitHub Copilot для создания запроса на создание кода, который работает лучше, чем существующий код. При взаимодействии с GitHub Copilot укажите максимально подробные сведения о том, чтобы повысить вероятность того, что ответ, предоставленный вами, соответствует вашим требованиям. Для этого:

  • Поймите код. Это понимание можно получить из существующего взаимодействия с GitHub Copilot.
  • Выберите исходный код и откройте чат GitHub Copilot.
  • Опишите проблему максимально подробно. Например, можно предоставить чат GitHub Copilot со следующим запросом:

Учитывая следующие требования:база данных SQLite содержит таблицы, относящиеся к рейтингам фильмов (см. структуру в complex.sql).Запрос должен эффективно агрегировать и возвращать лучшие фильмы по регионам, минимизируя время выполнения и избегая ненужных операций (например, избыточных CAST, ненужных JOIN или SELECT DISTINCT, если это не требуется).Результат должен содержать название фильма, средний рейтинг, регион и другие соответствующие поля.Запрос должен выполняться не более 1,5 секунд на большом наборе данных. Вся бизнес-логика и правильность должны сохраняться как в исходном complex.sql.Напишите высокопроизводительный SQL-запрос, который соответствует этим требованиям, и объясните все применяемые оптимизации.