Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Подскажите, пожалуйста, есть ли в MySQL какие-либо механизмы для работы с двоичными данными произвольной длины . Мне нужно оперировать с последовательностью бит, совершать над ними битовые операции AND,OR. Поле типа BIT упирается в 64 бита, мне нужно больше бит, BLOB вообще интерпретирует все как текст, т.е. Код: plsql 1. значит 3132 в HEX, а не 1100(bin) как хотелось бы. Получается, что всё ограничивается 64 битами? P.S. что такое 8 бит - 8 человек с битами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 20:39 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79BLOB вообще интерпретирует все как текстА это ничего, что BLOB согласно документации есть binary strings ? не говоря уж о том, что поток битов - он поток битов и есть, и от того, что ты о нём думаешь, как о строке, о числе, о массиве беззнаков или коллекции дататаймов, он не изменится. dmaytry79а не 1100(bin) как хотелось быНу так класть надо то, что хочется, а не на авось: Код: sql 1. dmaytry79Получается, что всё ограничивается 64 битами?А сам-то как думаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 21:31 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79Поле типа BIT упирается в 64 бита, мне нужно больше битИспользуйте больше полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 21:58 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
А теперь представь такую ситуацию Код: sql 1. Каков будет результат? Я же говорю, двоичными данными произвольной длины . Да и к тому же нужны операции как в ASM(AND,OR). Понятно, что всё ограничивается разрядностью процессора. Эта тема вытекает из предыдущей(" Фильтр по отдельным значением строки с разделителем "). Не могу найти подходящего решения. У меня больше 60 значений параметра. Кроме того, что самих параметров аж 4 штуки. Всякие JOIN на 500 000 записей просаживают сервак на десятки секунд, так что решение с отдельными таблицами не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:00 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
miksoft, количество значений параметра заранее неизвестно! Их может быть от 2 до 500(!) Сколько дополнительных полей использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:03 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79miksoft, количество значений параметра заранее неизвестно! Их может быть от 2 до 500(!) Сколько дополнительных полей использовать?Тогда используйте больше записей. Не зная задачи вряд ли можно советовать что-то конкретное. Возможно, даже СУБД выбрана не оптимально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:14 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
Опишу ситуацию более подробно. Пользователь создаёт заявку, в которой есть 4 параметра, у каждого из которых может любое количество параметров(от 2 до, например,1000). По каждому из параметров возможен мультивыбор, т.е. можно выбрать более одного. Здесь встают 2 вопроса: 1. Как сохранить выбор значений параметра в БД в таблицу "Заявки"; 2. Как осуществить фильтрацию заявок по параметрам. Если делать 4 доп таблицы по этим параметрам, а затем джойнить, то повторюсь LEFT JOIN сразу же сажает сервер даже на полмиллиона заявок. Я тестировал на двух связанных таблицах только лишь на 2(!) параметрах. Выборка заняла 11 сек, это совершенно неприемлемо. В то время как выборка с помощью AND на 4(!) параметрах на 0.5 млн записей заняла 2 сек. Поэтому мне и нужны биты как биты, а не как строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:14 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79, автору каждого из которых может любое количество параметров следует читать как у каждого из которых может любое количество значений параметра(от 2 до 1000). Например, высота от 49 до 215 с шагом 0,5 = 334 значения параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:21 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79Я тестировал на двух связанных таблицах только лишь на 2(!) параметрах. Выборка заняла 11 сек, это совершенно неприемлемо.Показывайте таблицы, запрос и его план. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:24 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
miksoft, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 22:37 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79Каков будет результат?Потеря точности будет результат. Что очевидно и ничего не доказывает. dmaytry79Я же говорю, двоичными данными произвольной длины .В MySQL нет реализации длинной арифметики. И про UDF-реализации оной мне слышать не приходилось. dmaytry79Эта тема вытекает из предыдущей(" Фильтр по отдельным значением строки с разделителем "). Не могу найти подходящего решения. У меня больше 60 значений параметра.Поделишь на два блока, в каждом меньше чем 64 бита. Не хватит - поделишь на три. На четыре. На сколько нужно, на столько и поделишь. dmaytry79Кроме того, что самих параметров аж 4 штуки. Всякие JOIN на 500 000 записей просаживают сервак на десятки секунд, так что решение с отдельными таблицами не подходит.А кто тебе виноват, если ты нетривиальную задачу пытаешься решать не очень подходящими для этого средствами? Переходи на MS SQL + OLAP, и будет тебе щастье... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 00:22 |
|
||
|
Работа с двоичными данными произвольной длины
|
|||
|---|---|---|---|
|
#18+
dmaytry79у каждого из которых может любое количество значений параметра(от 2 до 1000). Например, высота от 49 до 215 с шагом 0,5 = 334 значения параметра.Ну и нормально. Кодируй побитно в BLOB. И маску поиска тоже. И пиши ПФ сравнения (OR, AND - что нужно). Всё равно быстро не будет, ибо твой подход самая что ни на есть вражина индексам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 00:25 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39371410&tid=1831061]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 147ms |

| 0 / 0 |
