Имеет ли значение порядок столбцов в запросе?

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

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

SELECT uid, name, bday FROM table

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

SELECT uid, bday, name FROM table

3 ответов


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

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


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

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

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

с уважением

Wazzy


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