Имеет ли значение порядок столбцов в запросе? - PullRequest
11 голосов
/ 03 января 2011

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

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

SELECT uid, name, bday FROM table

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

SELECT uid, bday, name FROM table

Ответы [ 3 ]

7 голосов
/ 03 января 2011

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

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

2 голосов
/ 03 января 2011

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

При достойном оптимизаторе запросов: не должно.

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

с уважением

Wazzy

0 голосов
/ 03 января 2011

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

...