Size: a a a

2020 August 31

AR

Anton Revyako in ctodailychat
Alexander Panko
тема про вред от select * не раскрыта)
ээээ... я думал, это очевидно... :)
источник

AR

Anton Revyako in ctodailychat
если ты перечисляешь поля, которые попадут на выход, то ты контролируешь
- порядок полей
- количество извлекаемых данных

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

а следующий ход - передача по сети.
т.е. у хорошего селекта должны быть
- перечисление полей
- order by
- limit
источник

AP

Alexander Panko in ctodailychat
Anton Revyako
если ты перечисляешь поля, которые попадут на выход, то ты контролируешь
- порядок полей
- количество извлекаемых данных

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

а следующий ход - передача по сети.
т.е. у хорошего селекта должны быть
- перечисление полей
- order by
- limit
я имел ввиду есть ли какие то различия между * и перечислением полей если тебе нужны все данные?
источник

AR

Anton Revyako in ctodailychat
Alexander Panko
я имел ввиду есть ли какие то различия между * и перечислением полей если тебе нужны все данные?
различий нет. но схема базы может измениться. и select * вчера может быть совсем не тем, что select * сегодня
источник

OP

Oleg Perov in ctodailychat
сегодня нужны все, а завтра ты захотел добавить в табличку еще одно поле и тогда все ломается
источник

AR

Anton Revyako in ctodailychat
Oleg Perov
сегодня нужны все, а завтра ты захотел добавить в табличку еще одно поле и тогда все ломается
если добавил ничего не сломается, а просто начнет тормозить. а если тип поменялся или поле удалили, то сломается с гарантией
источник

OP

Oleg Perov in ctodailychat
зависит от либ и языка, с дефолтным драйвером в го ломаетя
источник

AR

Anton Revyako in ctodailychat
Alexander Panko
я имел ввиду есть ли какие то различия между * и перечислением полей если тебе нужны все данные?
например, ты поменял в запросе join on на join using или простигосподи join natural, то даже если схема не менялась, тебя будет ждать сюрприз
источник

AR

Anton Revyako in ctodailychat
Oleg Perov
зависит от либ и языка, с дефолтным драйвером в го ломаетя
а ну да, пардон
источник

AR

Anton Revyako in ctodailychat
если в нашем сервисе добавлять запросы не абы как, а версионированные, то мы будем предупреждать что тип ответа поменялся
источник

A

Alex in ctodailychat
Anton Revyako
если ты перечисляешь поля, которые попадут на выход, то ты контролируешь
- порядок полей
- количество извлекаемых данных

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

а следующий ход - передача по сети.
т.е. у хорошего селекта должны быть
- перечисление полей
- order by
- limit
"order by" это ты погорячился
источник

AR

Anton Revyako in ctodailychat
Alex
"order by" это ты погорячился
мы это обсуждали, пока ты был в отпуске )
источник

AR

Anton Revyako in ctodailychat
в постгре нет сортировки по умолчанию
источник

A

Alex in ctodailychat
да и пофиг. если порядок не важен - не надо писать order by, может начать не те индексы использовать
источник

AR

Anton Revyako in ctodailychat
if sorting is not chosen, the rows will be returned in an unspecified order
источник

A

Alex in ctodailychat
на базках по 100к строк нормально, на сотнях миллионах - надо сильно задуматься, перед тем как делать order by
источник

A

Alex in ctodailychat
Anton Revyako
if sorting is not chosen, the rows will be returned in an unspecified order
и прекрасно)
источник

K

KivApple in ctodailychat
При пагинации без order by будет очень грустно
источник

A

Alex in ctodailychat
"если порядок не важен"
источник

AR

Anton Revyako in ctodailychat
Alex
на базках по 100к строк нормально, на сотнях миллионах - надо сильно задуматься, перед тем как делать order by
ненормально, если у тебя запрос возвращает 100к сток )
источник