как SQL-запрос работает?

Как SQL-запрос работает? Как это становится скомпилированным? from пункт скомпилировал сначала, чтобы видеть, существует ли таблица? Как это на самом деле получает данные из базы данных? Как и в том, какой формат является таблицами, хранимыми в базе данных?

Я использую phpmyadmin, есть ли какой-либо способ, которым я могу посмотреть в файлы, где данные хранятся? Я использую MySQL

27
задан Anand Sunderraman 18 March 2010 в 08:31
поделиться

1 ответ

Well...

  • Сначала выполняется проверка синтаксиса, затем генерируется дерево выражений - на этом этапе вы также можете проверить, существуют ли элементы и "выстроены ли они" (т.е. существуют ли поля ВНУТРИ таблицы). Это первый шаг - при любой ошибке здесь вы просто скажете отправителю, чтобы он начал действовать.
  • Затем у вас есть.... анализ. SQL-запрос отличается от программы тем, что в нем не говорится КАК что-то сделать, а только КАКОВ РЕЗУЛЬТАТ. Логика, основанная на множестве. Поэтому вы подключаете анализатор запросов (в зависимости от продукта - от плохого к хорошему - oracle долгое время был дрянным, DB2 - самым чувствительным, даже измеряя скорость диска), чтобы решить, как лучше подойти к этому результату. Это действительно сложный зверь - он может перепробовать десятки или сотни подходов, чтобы найти тот, который, по его мнению, будет самым быстрым (на основе затрат, в основном, некоторой статистики).
  • Затем этот подход выполняется.

Анализатор запросов, кстати, именно здесь вы увидите огромные различия. Не уверен насчет MySQL - SQL Server (Microsoft) сияет тем, что у него не самый лучший анализатор (но один из хороших), а тем, что у него действительно есть хорошие визуальные инструменты для того, чтобы показать план запроса, сравнить оценки анализатора с реальными потребностями (если они отличаются слишком сильно, статистика таблицы может быть смещена, поэтому анализатор считает, что большая таблица маленькая). Они представляют это хорошо визуально.

В DB2 некоторое время был отличный оптимизатор, измеряющий - я уже говорил - скорость диска, чтобы включить ее в свои оценки. Oracle долгое время работал "слева направо" (без реального анализа) и принимал подсказки запросов, предоставляемые пользователем (дерьмовый подход). Я думаю, что MySQL тоже был ОЧЕНЬ примитивным в начале - не уверен, где он сейчас.

Формат таблиц в базе данных и т.д. - это действительно то, о чем вы не должны заботиться. Это документировано (очевидно, особенно для базы данных с открытым исходным кодом), но почему вас это должно волновать? Я занимаюсь SQL почти 15 лет или около того и никогда не испытывал такой необходимости. И это при том, что в некоторых областях я выполнял довольно высококлассную работу. Если только вы не пытаетесь создать инструмент для ремонта файлов баз данных...., то нет смысла беспокоиться.

15
ответ дан 28 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: