Минимизировать вывод MySQL с помощью Compress () и объединять результаты? - PullRequest
0 голосов
/ 02 мая 2010

Очень важно, чтобы я передавал как можно меньше данных между сервером и клиентом. Поэтому я подумал об использовании функции MySQL Compress (). Чтобы получить максимальное сжатие, я также хочу объединить все мои результаты в одну большую строку (или несколько из максимальной длины, разрешенной MySql), чтобы позволить сжимать аналогичные результаты, а затем сжать эти / эту строку.

1-я задача (объединение результатов mysql):

SELECT name,age
FROM users

возвращает 10 результатов. Я хочу объединить все эти результаты в одну строку в форме: имя, возраст, имя, возраст, имя, возраст ... и так далее. Возможно ли это?

2-я задача (сжатие результатов сверху)

Когда я создаю составную строку, как указано выше, я хочу сжать ее. Если я сделаю:

SELECT COMPRESS('myname');

тогда он просто выводит мне символ '-' - иногда он даже возвращает непечатные символы. Как мне получить COMPRESS (), чтобы вернуть сжатую печатаемую строку, которую я могу передать в кодировке ex ASCII?

Ответы [ 2 ]

5 голосов
/ 02 мая 2010

В зависимости от клиентской библиотеки, с которой вы работаете (не все библиотеки поддерживают ее) , может быть, вы могли бы использовать сжатый протокол MySQL?

Вот несколько ссылок об этом:

3 голосов
/ 03 мая 2010
  1. Возможно, вы захотите исследовать хранимую процедуру, которая может создать внутреннюю строку и вернуть ее. По своей природе MySQL не собирается превращать «вертикальный» результат запроса в «горизонтальный» для вас, это не то, для чего нужна реляционная СУБД. Это больше проблема отображения. Единственное исключение - использование group_concat(), если вы выполняете какой-либо запрос соединения с группировкой.

  2. COMPRESS() возвращает двоичную строку, поэтому неудивительно, что вы иногда получаете непечатаемые символы - она ​​не предназначена для возврата чего-то «читабельного». Кроме того, он добавляет 4 байта к сжатой строке, чтобы представить длину несжатой строки, поэтому сжатие 5 байтов или меньше не спасет вас.

...