• Как определить, что пользователь не загрузил картинку в соц сеть?

    @bkosun
    Вконтакте:

    vk.com/dev/users.get
    vk.com/dev/fields

    photo_50 url квадратной фотографии пользователя, имеющей ширину 50 пикселей. В случае отсутствия у пользователя фотографии возвращается vk.com/images/camera_c.gif.
    строка
    photo_100 url квадратной фотографии пользователя, имеющей ширину 100 пикселей. В случае отсутствия у пользователя фотографии возвращается vk.com/images/camera_b.gif.
    строка
    photo_200_orig url фотографии пользователя, имеющей ширину 200 пикселей. В случае отсутствия у пользователя фотографии возвращается vk.com/images/camera_a.gif.
    строка
    photo_200 url квадратной фотографии пользователя, имеющей ширину 200 пикселей. Если фотография была загружена давно, изображения с такими размерами может не быть, в этом случае ответ не будет содержать этого поля.
    строка
    photo_400_orig url фотографии пользователя, имеющей ширину 400 пикселей. Если у пользователя отсутствует фотография такого размера, ответ не будет содержать этого поля.
    строка
    photo_max url квадратной фотографии пользователя с максимальной шириной. Может быть возвращена фотография, имеющая ширину как 200, так и 100 пикселей. В случае отсутствия у пользователя фотографии возвращается vk.com/images/camera_b.gif.
    строка
    photo_max_orig url фотографии пользователя максимального размера. Может быть возвращена фотография, имеющая ширину как 400, так и 200 пикселей. В случае отсутствия у пользователя фотографии возвращается vk.com/images/camera_a.gif.
    строка
    Ответ написан
    Комментировать
  • Как разумнее составить запрос Select с циклом Update?

    Melkij
    @Melkij
    PostgreSQL DBA
    Специфично для mysql:
    SET @a:=0;
    UPDATE dle_products SET top=@a:=@a+1  WHERE tt != '0' ORDER BY tt DESC, kk DESC;
    Ответ написан
    2 комментария
  • Оптимизация Mysql. Типы данных. Правильно ли я понял?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В вашем случае вы пытаетесь оптимизировать место на диске и в памяти, что совсем не тоже самое, что оптимизировать скорость запросов.

    1) Столбцу необходимо указывать тот тип данных, который для него подходит, и не обязательно минимально возможный. Чтобы понять имеет ли смысл экономить место, нужно проанализировать ваши запросы - по каким именно столбцам происходит поиск - вот их оптимизировать в первую очередь. Если запросы не выполняют поиск по вашему текстовому полю, то особо нет разницы какой оно длины - строка будет найдена например по id primary кей. а прочитать 2 кб или 3 кб - разницы нет. То есть ВСЕ поля минимизировать для ускорения нет смысла, разве что для уменьшения памяти.

    2) sql не адресует биты, он все равно будет выделять минимально байт для хранения флага. enum не означает 2 байта, enum может означать список флагов, это вполне может быть и 1 байт со значениям 0 и 1. или 0,1,2. Зависит от базы.

    3) text - удобно, если вы не знаете точный размер. varchar хранится прямо в строке, text и blob хранит там ссылку, а сами данные хранятся отдельно. С точки зрения оптимизации памяти - текст выгоднее. С точки зрения скорости доступа к данным - varchar быстрее. Плюс по text нельзя индексировать.

    4) Если поле все время пустое, и вы сделали char0, то в памяти будет выделяться новая область каждый раз, когда вы в существующую строку но с пустым полем будете добавлять что-то в это поле. А если varchar(2000), то для всех существующих записей память будет выделена сразу при запуске mysql, и обновление будет происходить быстрее чем создание новой записи.

    5) varchar(2000) для всех значений. На случай если вы вдруг измените строку в таблице, и чтобы это место в памяти не "раздвигать", перемещая ВСЕ данные.
    Ответ написан
    Комментировать
  • Оптимизация Mysql. Типы данных. Правильно ли я понял?

    @ollisso
    1. желательно да, иначе вы неправильно используете пространство.
    Пока у вас < 1000 строк это не страшно. но если у вас миллион строк - то таблицы могут уменьшится в разы.

    2. можно ещё BIT но с ним сложнее работать. можно использовать tinyint.
    3. если длинный текст (более 255 символов) то лучше использовать tinytext, text, longtext и тп. Плюс varchar - можно делать индекс на него. На text сделать индекс не оптимально, насколько я помню.
    4. tinyint или bit
    5. varchar - столько, сколько данных + системные символы (несколько байт)
    char - занимает фиксированное количество места.

    посмотрите, может у вас индексы слетели каким либо образом ? Обычно именно индексы оказывают серьёзное влияние на прозводительность, а не размер полей.
    Ответ написан
    Комментировать