BIGINT
Re: BIGINT
Garch, поля типа CHAR и VARCHAR могут хранить до 255 символов, занимают памяти в байтах равно числу хранимых в них символов. (у VARCHAR еще вроде +1 байт).
То есть число 999999999999999999999 займет 21 - 22 байта. Если у вас будет с миллион строк с такими числами, то они займут где-то мегабайт двадцать.
В выборке они конечно будут уступать числовым. Но если вы по этим полям выбирать не будете или строк не очень много, то такой способ вполне жизнеспособен.
То есть число 999999999999999999999 займет 21 - 22 байта. Если у вас будет с миллион строк с такими числами, то они займут где-то мегабайт двадцать.
В выборке они конечно будут уступать числовым. Но если вы по этим полям выбирать не будете или строк не очень много, то такой способ вполне жизнеспособен.
Re: BIGINT
В общем давайте так вопрос поставим:
Какой самый оптимальный способ хранить в базе числа от 0 до 999999999999999999? Это число я только получаю из базы, обрабатываю в as3 и засовываю обратно. Какой тип поля должен стоять в бд?
Прошу объяснить как можно подробнее, а то потом могут проблемы возникнуть серьезные, а в чем беда не пойму))
Заранее благодарю)
Какой самый оптимальный способ хранить в базе числа от 0 до 999999999999999999? Это число я только получаю из базы, обрабатываю в as3 и засовываю обратно. Какой тип поля должен стоять в бд?
Прошу объяснить как можно подробнее, а то потом могут проблемы возникнуть серьезные, а в чем беда не пойму))
Заранее благодарю)
Re: BIGINT
А клиент не обидится на такие большие числа? Он их будет обрабатывать?
Re: BIGINT
Вопрос как вы их получаете?
Какой именно с ними запрос делаете?
Вообще смысла в больших числах нету, если это не долг США)) Нормальный вариант обойтись без них. А так BigInt
Какой именно с ними запрос делаете?
Вообще смысла в больших числах нету, если это не долг США)) Нормальный вариант обойтись без них. А так BigInt
- Abarmotina
- Сообщения: 469
- Зарегистрирован: 21 апр 2012, 19:34
Re: BIGINT
А не вариант передавать в БД значение "3", а при работе уже прибавлять 6 нулей?
Имхо, чем не вариант?
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
Re: BIGINT
Храните в BIGINT и не парьтесь. А на счет того, что у вас BIGINT за INT принимает перепроверьте все еще раз.
Пример:
Создаю таблицу
добавляю пару записей одну с числом на пределе INT другую с заведомо большим
Пишу в PHP:
Получаю в базе:
2147484646 и 10000000000000999
Никаких проблем нет.
Вы на клиенте или в PHP полученное из базы число в переменную с каким типом пытаетесь засунуть?![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
Пример:
Создаю таблицу
Код: Выделить всё
CREATE TABLE `mytable` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `name` TEXT, PRIMARY KEY (`id`));
Код: Выделить всё
INSERT INTO `mytable` VALUES (2147483646,'IndieGD');INSERT INTO `mytable` VALUES (999999999999999,'IndieGD');
Код: Выделить всё
$db = new Mysqli();$db->connect("localhost", 'root', 'root');$db->select_db("test");$db->query("UPDATE `mytable` SET `id` = `id` + 1000");
2147484646 и 10000000000000999
Никаких проблем нет.
Вы на клиенте или в PHP полученное из базы число в переменную с каким типом пытаетесь засунуть?
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
Re: BIGINT
Ну я думаю не должен, а там посмотрим))А клиент не обидится на такие большие числа? Он их будет обрабатывать?
Через пхп, SELECT, потом перевожу ответ в json и использую во флэше вытаскивая данные из json'а)Вопрос как вы их получаете?
Какой именно с ними запрос делаете?
Потом обратно INSERT INTO
Как это обойтись без них? Это же очки юзера, они должны бытьВообще смысла в больших числах нету, если это не долг США)) Нормальный вариант обойтись без них. А так BigInt
Ну точнее не очки, а скорее валюта. Хотя скорее что-то среднее))
Вы не поняли, число может быть абсолютно любым, а 3000000 это я написал просто для примера - типо насколько будет большим число если каждую секунду к нему прибавляется например 3000000))А не вариант передавать в БД значение "3", а при работе уже прибавлять 6 нулей?Имхо, чем не вариант?
- Abarmotina
- Сообщения: 469
- Зарегистрирован: 21 апр 2012, 19:34
Re: BIGINT
Ааа!
Тогда пост IndieGD Вам должен помочь!
Перепроверьте всё.
![Подмигивает ;)](./images/smilies/icon_e_wink.gif)
![Улыбается :)](./images/smilies/icon_e_smile.gif)
Re: BIGINT
В пхп я кодирую просто все в jsonВы на клиенте или в PHP полученное из базы число в переменную с каким типом пытаетесь засунуть?![]()
Код: Выделить всё
$result = mysql_query('SELECT `total`,`persec` FROM stat WHERE uid='.$viewer_id.''); $score = mysql_fetch_array($result); echo json_encode($score);
Код: Выделить всё
var resultJ = JSON.parse(stat_loader.data);NTotal = int(resultJ.total);var nf:NumberFormatter = new NumberFormatter("en-US"); total.text=String(nf.formatNumber(NTotal));
Re: BIGINT
Код: Выделить всё
Через пхп, SELECT, потом перевожу ответ в json и использую во флэше вытаскивая данные из json'а)Потом обратно INSERT INTO
Код: Выделить всё
SELECT vkid, score WHERE vkid=@vkid
Код: Выделить всё
SELECT vkid, score WHERE score=@score