|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.12.2012, 01:27 | #1 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Сжать строчку из цифр для хранения в БД
Всем привет! Есть таблица, в которой должно быть около 1.5 млн записей. В ней хранятся строки вида "10211200" и "3501002100011100000213232011201231 010734"
- просто наборы цифр фиксированной длины. Посоветуйте как сжать эти данные, чтоб таблица не занимала много места и чтобы потом быстро при выборке на PHP можно было привести к исходному виду. Заранее благодарен вам! З.Ы. Данные добавляются на PHP - то есть просто нужна какая нибудь функция для сжатия/распаковки. А может и не VARCHAR тут понадобится даже а что-то другое. Последний раз редактировалось Mr_freeman; 19.12.2012 в 01:31. |
19.12.2012, 02:06 | #2 |
Форумчанин
Регистрация: 03.12.2010
Сообщений: 334
|
1.Если эти наборы цифр не имеют четкого алгоритма создания, то никак их не ужмешь.
2.Если наборы цифр фиксированной длины, то varchar с указанием длины это самое оно. 3.Если грамотно распланировать выборку и не извлекать сразу все 1.5 млн записей, то БД вполне справится. Из того, что первое на мысль пришло - переводить числа в 16-ричную систему, это сократит запись, но я сомневаюсь, что это рентабельно. Чтоб сказать больше, надо понимать откуда эти числа берутся и как они будут потом использоваться. Последний раз редактировалось Mortimoro; 19.12.2012 в 02:09. |
19.12.2012, 04:06 | #3 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Каждая цифра берется рандомно из фиксированного промежутка. К примеру, первое - от 0 до 4, второе - от 0 до 9, и т. д.
Может как то преобразовать их в буква или символы какие то, чтоб сократить длину. Например взять первые три цифры - один символ, следующие три цифры - второй символ и т. д. Кодировка utf8. |
19.12.2012, 07:42 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
для чего такие строки цифр ? Объясните? может они вообще и не нужны....
|
19.12.2012, 10:59 | #5 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Нужны. С помощью этих цифр генерируются предложения для текста для некоторых элементов из другой таблицы. Генерация происходит из набора фиксированных, уже заданных массивов прямо на странице. Сначала я хранил в базе сами полученные тексты, но это занимало так много памяти, что даже пришлось менять тариф на хостинге.
У нас динамичная база, которая постоянно расширяется, поэтому приходится уделять много внимания на экономию физической памяти. |
19.12.2012, 11:12 | #6 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
как вариант - если данные наборы цифр "влезают" в числовые форматы... хранить числами.. то есть не varchar(12) а int(12) ...явная экономия. Если не умещаются... то есть библы для работы с большими числами вроде
|
19.12.2012, 11:27 | #7 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Для второго столбика думаю подойдет, если int(8). А для первого не знаю. Встречался на PHP с такой штукой как BCMath, но как она может помочь. Если не ошибаюсь, она используется для операций над боооольшими цифрами.
|
19.12.2012, 11:38 | #8 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
определись с размером самой большой строки... уже оттуда можно искать нужный тип данных
|
19.12.2012, 12:09 | #9 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
Первая строчка из 40 символов, вторая из 8. И так в каждой строке таблицы:
|
19.12.2012, 12:26 | #10 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
посмотри тут http://kbss.ru/blog/bd_mysql/153.html про типы рсписано
З.Ы. надеюсь что id_cat число а не строка? ))) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структура данных для хранения предметов | L_M | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 5 | 15.11.2010 21:08 |
Структура для хранения произвольной мелодии | LordotU | Помощь студентам | 5 | 02.10.2010 22:21 |
Программа для хранения паролей [help] | DimOn4Ik | Общие вопросы Delphi | 10 | 23.10.2009 22:51 |
Компонент для хранения информации. | IVANSour | Компоненты Delphi | 7 | 28.01.2009 03:02 |