MySQL - «выбрать» скорость - PullRequest
       2

MySQL - «выбрать» скорость

1 голос
/ 15 января 2011

Мне было интересно, быстрее ли будет выбрать все поля из таблицы, например:

SELECT *

или выбрать те, которые вам действительно нужны:

SELECT field1, field2, field3, field4, field5...

при условии, что таблица имеет10 полей, и мне нужно только 5 или 6 для этой операции

Ответы [ 3 ]

3 голосов
/ 15 января 2011

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

Есть небольшой нюанс. Возможно, было бы лучше, чтобы кеш запросов имел ограниченное количество запросов, поэтому, когда вам иногда нужны только поля 1, 2 и 3, а в некоторых других случаях вам может понадобиться и 4, а 4 - это только небольшое поле, это Лучше всегда выбирать 1, 2, 3 и 4, даже если вам нужны только первые 3. Вы все равно должны никогда использовать * хотя.

3 голосов
/ 15 января 2011

Там, где это возможно, быстрее выбирать точные поля.Ваша интуиция верна: все, что вы можете представить как потраченное впустую машинное время, вероятно, действительно потраченная впустую работа, хотя величина всегда подвергается сомнению.Этот конкретный пример - одна из причин, по которой сгенерированный код (через ORM ) настолько популярен!В ORM большинство базовых и повторяющихся функций оптимизации находятся в руках самого ORM, и пользовательские рукописные запросы являются скорее исключением, чем правилом.

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

Выбор ваших полей может иметь большое влияние на скорость. Когда вы делаете выбор * и некоторые из полей являются BLOB или TEXT, вы будете иметь серьезные негативные последствия. Проверьте эту страницу документации и найдите 'избегать использования select *'.

...