Саймон Уиллисон выпустил SQLite Query Explainer для разбора SQL-запросов
Саймон Уиллисон выпустил инструмент SQLite Query Explainer, веб-страницу, где можно выполнить SQL-запрос к базе SQLite прямо в браузере и увидеть, как именно SQLite его исполняет. Инструмент запускает запрос, а затем построчно аннотирует вывод и EXPLAIN QUERY PLAN (план запроса), и низкоуровневого EXPLAIN (байт-код виртуальной машины SQLite), поясняя простым языком, что делает планировщик запросов и виртуальная машина на каждом шаге. Сам SQLite при этом работает в браузере через Python, запущенный в Pyodide поверх WebAssembly.
Поводом послужил пост Джулии Эванс «Learning a few things about running SQLite», где она написала: «Может быть, когда-нибудь я научусь читать план запроса». Уиллисон, испытывая то же чувство, поручил ИИ-агенту по имени Fable собрать этот интерактивный инструмент-объяснитель.
Сам автор предупреждает, что не настолько разбирается в планах запросов SQLite, чтобы самостоятельно проверить корректность объяснений, которые выдаёт инструмент, но, по его оценке, результаты выглядят правдоподобно ("cromulent").
Ключевые факты
- Саймон Уиллисон опубликовал SQLite Query Explainer, браузерный инструмент для разбора выполнения SQL-запросов в SQLite
- Инструмент построчно аннотирует и
EXPLAIN QUERY PLAN, и низкоуровневый байт-кодEXPLAIN, объясняя простым языком, что делает планировщик и виртуальная машина - SQLite работает прямо в браузере: Python в Pyodide поверх WebAssembly, без сервера
- Идею подсказал пост Джулии Эванс о сложности чтения планов запросов SQLite
- Код собирал ИИ-агент Fable по поручению Уиллисона; сам автор признаёт, что не может проверить точность объяснений, но считает их правдоподобными
Почему это важно
Чтение EXPLAIN QUERY PLAN и особенно низкоуровневого байт-кода EXPLAIN в SQLite, задача, которая ставит в тупик даже опытных разработчиков: вывод компактный и требует знания внутреннего устройства виртуальной машины SQLite. Инструмент Уиллисона снимает этот барьер, добавляя построчные объяснения на понятном языке поверх штатного вывода SQLite, не требуя от пользователя изучать документацию по байт-коду.
Кому это важно
Разработчикам и инженерам, которые используют SQLite (в приложениях, встраиваемых базах, локальной разработке) и хотят понять или оптимизировать конкретный запрос, но не владеют внутренней механикой планировщика запросов SQLite.
Как это применить
Инструмент бесплатный и работает полностью в браузере: SQLite исполняется через Python в Pyodide поверх WebAssembly, сервер не требуется. Достаточно открыть страницу, ввести SQL-запрос к базе SQLite и получить построчный разбор плана выполнения и байт-кода на понятном языке.
Можно ли доверять
Сам Уиллисон, опытный разработчик с многолетним опытом, но прямо признаёт: он недостаточно разбирается в планах запросов SQLite, чтобы самостоятельно проверить точность объяснений, которые выдаёт инструмент. Инструмент собирал ИИ-агент Fable, а не сам автор писал логику разбора.
Риски и подводные камни
Главный риск явно назван самим автором: объяснения могут содержать неточности, поскольку никто не верифицировал их построчную корректность против реального поведения SQLite. Использовать инструмент стоит как подспорье для интуитивного понимания плана запроса, а не как авторитетный источник истины о внутренней работе SQLite.
«Использовать с осторожностью: я недостаточно разбираюсь в планах запросов SQLite, чтобы самому проверить результаты, но выглядит вполне правдоподобно.»
— Саймон Уиллисон