powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Работа с двоичными данными произвольной длины
12 сообщений из 12, страница 1 из 1
Работа с двоичными данными произвольной длины
    #39371354
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Подскажите, пожалуйста, есть ли в MySQL какие-либо механизмы для работы с двоичными данными произвольной длины .
Мне нужно оперировать с последовательностью бит, совершать над ними битовые операции AND,OR.

Поле типа BIT упирается в 64 бита, мне нужно больше бит, BLOB вообще интерпретирует все как текст, т.е.

Код: plsql
1.
UPDATE `table` SET `blob_column`=12


значит 3132 в HEX, а не 1100(bin) как хотелось бы.

Получается, что всё ограничивается 64 битами?

P.S. что такое 8 бит - 8 человек с битами!
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371381
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79BLOB вообще интерпретирует все как текстА это ничего, что BLOB согласно документации есть binary strings ? не говоря уж о том, что поток битов - он поток битов и есть, и от того, что ты о нём думаешь, как о строке, о числе, о массиве беззнаков или коллекции дататаймов, он не изменится.

dmaytry79а не 1100(bin) как хотелось быНу так класть надо то, что хочется, а не на авось:
Код: sql
1.
UPDATE `table` SET `blob_column`=CHAR(12);



dmaytry79Получается, что всё ограничивается 64 битами?А сам-то как думаешь?
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371399
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79Поле типа BIT упирается в 64 бита, мне нужно больше битИспользуйте больше полей.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371401
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А теперь представь такую ситуацию

Код: sql
1.
UPDATE `table` SET `blob_column`=CHAR(POWER(2,100));



Каков будет результат?

Я же говорю, двоичными данными произвольной длины . Да и к тому же нужны операции как в ASM(AND,OR).
Понятно, что всё ограничивается разрядностью процессора.

Эта тема вытекает из предыдущей(" Фильтр по отдельным значением строки с разделителем "). Не могу найти подходящего решения.
У меня больше 60 значений параметра.

Кроме того, что самих параметров аж 4 штуки. Всякие JOIN на 500 000 записей просаживают сервак на десятки секунд, так что решение с отдельными таблицами не подходит.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371403
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, количество значений параметра заранее неизвестно! Их может быть от 2 до 500(!)
Сколько дополнительных полей использовать?
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371410
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79miksoft, количество значений параметра заранее неизвестно! Их может быть от 2 до 500(!)
Сколько дополнительных полей использовать?Тогда используйте больше записей.

Не зная задачи вряд ли можно советовать что-то конкретное. Возможно, даже СУБД выбрана не оптимально.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371411
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опишу ситуацию более подробно. Пользователь создаёт заявку, в которой есть 4 параметра, у каждого из которых может любое количество параметров(от 2 до, например,1000). По каждому из параметров возможен мультивыбор, т.е. можно выбрать более одного.

Здесь встают 2 вопроса:

1. Как сохранить выбор значений параметра в БД в таблицу "Заявки";
2. Как осуществить фильтрацию заявок по параметрам.

Если делать 4 доп таблицы по этим параметрам, а затем джойнить, то повторюсь LEFT JOIN сразу же сажает сервер даже на полмиллиона заявок.

Я тестировал на двух связанных таблицах только лишь на 2(!) параметрах.
Выборка заняла 11 сек, это совершенно неприемлемо.
В то время как выборка с помощью AND на 4(!) параметрах на 0.5 млн записей заняла 2 сек.

Поэтому мне и нужны биты как биты, а не как строки.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371417
dmaytry79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmaytry79,
автору каждого из которых может любое количество параметров
следует читать как у каждого из которых может любое количество значений параметра(от 2 до 1000).
Например, высота от 49 до 215 с шагом 0,5 = 334 значения параметра.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371422
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79Я тестировал на двух связанных таблицах только лишь на 2(!) параметрах.
Выборка заняла 11 сек, это совершенно неприемлемо.Показывайте таблицы, запрос и его план.
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371428
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
+1
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371480
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79Каков будет результат?Потеря точности будет результат. Что очевидно и ничего не доказывает.

dmaytry79Я же говорю, двоичными данными произвольной длины .В MySQL нет реализации длинной арифметики. И про UDF-реализации оной мне слышать не приходилось.

dmaytry79Эта тема вытекает из предыдущей(" Фильтр по отдельным значением строки с разделителем "). Не могу найти подходящего решения.
У меня больше 60 значений параметра.Поделишь на два блока, в каждом меньше чем 64 бита. Не хватит - поделишь на три. На четыре. На сколько нужно, на столько и поделишь.

dmaytry79Кроме того, что самих параметров аж 4 штуки. Всякие JOIN на 500 000 записей просаживают сервак на десятки секунд, так что решение с отдельными таблицами не подходит.А кто тебе виноват, если ты нетривиальную задачу пытаешься решать не очень подходящими для этого средствами? Переходи на MS SQL + OLAP, и будет тебе щастье...
...
Рейтинг: 0 / 0
Работа с двоичными данными произвольной длины
    #39371482
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmaytry79у каждого из которых может любое количество значений параметра(от 2 до 1000).
Например, высота от 49 до 215 с шагом 0,5 = 334 значения параметра.Ну и нормально. Кодируй побитно в BLOB. И маску поиска тоже. И пиши ПФ сравнения (OR, AND - что нужно). Всё равно быстро не будет, ибо твой подход самая что ни на есть вражина индексам.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Работа с двоичными данными произвольной длины
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]