Оперирует ли порядок столбцов в запросе?

При выборе столбцов из таблицы MySQL на производительность влияет порядок, по которому вы выбираете столбцы, по сравнению с их порядком в таблице (не считая индексов, которые могут охватывать столбцы)?

Например, у вас есть таблица со строками uid, name, bday, и у вас есть следующий запрос.

SELECT uid, name, bday FROM table

Может ли MySQL увидеть следующий запрос по-разному и, таким образом, вызвать какую-либо производительность?

SELECT uid, bday, name FROM table

Ответ 1

Порядок не имеет значения, на самом деле, поэтому вы можете заказать их, как бы вы хотели.

edit: Я думаю, что немного больше фона полезно: насколько я знаю, процесс оптимизации любого запроса происходит до определения того, какое подмножество данных строки вытягивается. Таким образом, оптимизатор запросов разбивает его на первую таблицу, на которую следует смотреть, объединяется для выполнения, индексы для использования, агрегаты для применения и т.д., А затем извлекает этот набор данных. Порядок упорядочения столбцов происходит между выводом данных и формированием набора результатов, поэтому данные фактически "поступают" по заказу базы данных и затем переупорядочиваются по мере их возврата в ваше приложение.

Ответ 2

На практике я подозреваю, что это возможно.

С хорошим оптимизатором запросов: он не должен.

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

с учетом

Wazzy

Ответ 3

Порядок выбранных атрибутов пренебрежимо мал. Базовые системы хранения данных, безусловно, упорядочивают свои местоположения атрибутов, но вы не обязательно должны знать, какой именно заказ (переименовывает, меняет таблицы, строки и хранилища столбцов) в большинстве случаев может быть независимым от описания таблицы, которое является просто метаданными так или иначе. Порядок представления в результирующем наборе был бы незначителен с точки зрения любых измеримых накладных расходов.