← Вернуться к списку тем

Какая правильная структура хранения from id?

Приветствую.

Идентификаторы каналов и пользователей телеграм уже очень большие.

Решил сделаю апгрейд/рефакт баз данных.

Хотелось бы убрать id autoncrement, считаю его излишним. Ведь, всё равно у телеграм уникальные id пользователей, каналов и так далее.

Собственно вопрос.

Как правильно сделать структуру сохранения в mysql?

Делать на from.id varchar? Или unique? Я тестировал, показалось, что при unique работает быстрее, чем при varchar.

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

Проблема в том, что в базу пишется значение хорошо, там поля имеют тип bigint. Но php выдаёт ошибку вместо числа. На python такой проблемы нет. Или может есть возможность заставить php работать с большими числами? 

🤔🤔🤔

Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.

  • iMakeBots [4 месяца назад]

    Я храню их в bigint, диапазона хватит надолго:

    -9223372036854775808 :: 9223372036854775807

  • Денис 💡 Фрилансер [4 месяца назад → iMakeBots]

    Ну в базе хорошо держится и сохраняется. Но когда скриптом php выводу, он пишет бред какой то типо : 10523E - что-то подобное. Иногда вообще скрипт рушится.

    Вот понять не могу. Обычный вывод из таблицы. 🤪🙄

  • iMakeBots [4 месяца назад → Денис 💡 Фрилансер]

    Это экспоненциальный формат, была у меня такая "фишка" - не помню правда где, не смог найти сейчас. Поэтому не подскажу в чем была проблема и как ее решил)))

    предложение: выводи не как число, а как строку (string)$num

  • Денис 💡 Фрилансер [4 месяца назад → iMakeBots]

    Сейчас так и вывожу. Но все равно не покидает мысль, что может пойти не так. Никак нагуглить не могу решение. 

  • iMakeBots [4 месяца назад → Денис 💡 Фрилансер]

    Я где-то этот вывод (преобразование) отключил, только не могу вспомнить

  • Денис 💡 Фрилансер [4 месяца назад → iMakeBots]

    Может константами? Ну опять же, они уже выставлены

    https://www.php.net/manual/en/reserved.constants.php#constant.php-int-size

  • Денис 💡 Фрилансер [4 месяца назад]

    Попутно спрошу.

    Сейчас у меня id каналов, групп хранится так

    channel_id varchar -100454545454555

    Получается, я могу поле сделать bigint, убрать знак минус, или вообще - 100

    А скриптом тогда выводить так (string)...->channel_id

    Быстрее же должно быть, чем с varchar? 

  • iMakeBots [4 месяца назад → Денис 💡 Фрилансер]

    по скорости не подскажу - не думаю что прям разницу почувствуете

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

  • Денис 💡 Фрилансер [4 месяца назад → iMakeBots]

    Буду пробовать. Конечно, хочется чтоб меньше было действий, без всяких обрезаний - 100