что работает быстрее * или перечисление полей

Vital_N

Новичок
что работает быстрее * или перечисление полей

что на мускуле отработает быстрее select * или перечисление полей?
при условии выборки из одной таблицы, небольшом (в пределах 10) кол-ве полей, кол-во записей в пределах до тысячи
 

kvf77

Red Devil
Vital_N

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

Vital_N

Новичок
kvf77
интерес именно в скорости - просто заинтересовал вопрос, на указанном кол-ве записей нверное вообще не будет разницы, но вот на больших объемах интересно, учитывая, что * и перечисление полей вернут одинаковое кол-во колонок
 

liss

Новичок
Я думаю экспериментальным путём можно было бы и посмотреть.

На 4600 записей (13 полей):
select * from table -> 4604 rows fetched ( 0,11 sec);
select [9 fields] from table -> 4604 rows fetched ( 0,08 sec);
select [13 fields] from table -> 4604 rows fetched ( 0,11 sec)
 

alexhemp

Новичок
liss
Я думаю будет разница если добавят в будущем BLOB-поле.

Тогда рекордсет формируемый SELECT-ом будет дольше фетчится.

Порядок полей никакой роли не играет ибо давно все используют ассоциативные массивы.

Так что я вижу только одну неприятную возможность - лишние затраты на фетч ненужных значений, особенно если они большие.
 

liss

Новичок
alexhemp
Ваще-то в моём примере 1 поле типа BLOB. В нём хранятся картинки и вся база весит что-то около 125М.

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

alexhemp

Новичок
liss
Ты не понял похоже ничего

если тебе нужно выбрать только несколько полей и при этом в числе НЕ НУЖНЫХ в данный момент имеются BLOB поля - то указав * ты при каждой операции выборки ряда (mysql_fetch_assoc()) будешь нагржать сервер ненужной операцией - считыванием блоба в память, передачей его в ассоциативный массив в скрипте.
Что может сказаться на производительности не самого запроса - а выборки.
 

liss

Новичок
Да нет, всё я понял правильно, да и это вполне очевидно что ненужные блобы будут жрать ресурсы. Речь идёт про скорость выполнения запроса и эта скорость напрямую зависит от полей таблицы, где я предполагаю время выборки всех полей будет примерно равно сумме времён по каждому полю. Или я всё же не прав?
 

chira

Новичок
liss
список полей не будет оказывать сильного влияния на скорость выполнения запроса.
при написании программ я бы советовал перечислять все поля которые ты выбираешь.
 

liss

Новичок
chira
Всмысле не будет оказывать влияния? Как это?
Что одно поле выбирать, а что 10? См. мой пример выше.
 

chira

Новичок
liss
твой пост я видел, при работе с большими таблицами основное время в будет затрачиваться MySQL-ом для нахождения нужных записей, а разница в показе одного поля или всех на общем фоне будет мизерная.
 

ForJest

- свежая кровь
Vital_N
В мускуле они будут отрабатывать примерно одинаково
При пересылке больших объёмов данных (если, допустим есть поля BLOB и там картинки, или большие объёмы текста) из MySQL в PHP (результатов запроса), возможно перечисление полей сработает "быстрее".
Простейшая аналогия - если отключить в браузере показ картинок, то страница загружается быстрее :).
 

Dr_Jones

Новичок
Зачем тебе вообще BLOB-поле?
Вытащи картинки в файлы и создай поле с ссылкой на файл или назови файлы по id записи.
Базу разгрузиш.

Не вижу смысла хранить их в базе
 

liss

Новичок
Автор оригинала: Dr_Jones
Зачем тебе вообще BLOB-поле?
Вытащи картинки в файлы и создай поле с ссылкой на файл или назови файлы по id записи.
Базу разгрузиш.

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