|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
Есть таблица около миллиона записей вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Это самые длинные записи. Есть записи и по 10 и пр. минимум - 6 Требуется сравнить каждую запись с каждой и составить аналогичную таблицу но уже с новыми совпадениями. Работаю на ноутбуке. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 21:46 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
Например первая строка этой таблицы означает что в строках 160-2504 предыдущей таблицы есть совпадения цифр: 1_4_10_12_16_26_30_32_38_42_44_48_69_72 И этих совпадений - 14 - 14 чисел совпало ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 21:50 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
Если надо сравнить всех со всеми, то загонять таблицу в массив, сравнивать и результат писать в БД. Только боюсь это надолго растянется, т.к. всего сравнений N*N/2, т.е. полтриллиона в данном случае. Зачем это надо я не понял, возможно можно уйти от сравнения всех со всеми к более эффективному решению. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 07:28 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
miltorg Требуется сравнить каждую запись с каждой и составить аналогичную таблицу но уже с новыми совпадениями. Сравните каждую запись с каждой и составьте аналогичную таблицу, но уже с новыми совпадениями. miltorg Спасибо. Не благодарите. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 07:38 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 07:51 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
miltorg, Решение есть на mySQL Я его почти доделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 11:26 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
miltorg Я его почти доделал. Ты его уже месяц почти доделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 11:30 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
Dima T, в какоето дерево надо эту таблицу превращать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 11:34 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
tchingiz, Ой, не спрашивай. Он уже месяц всем мозги мурыжит, а полного ТЗ сделать не может. Задача решена по моей ссылке выше на жс прямо в браузере, считается за 20 сек, надо только оттестить, но Андрейка нос воротит. Суть простая - лаба по комбинаторике. У него есть массив наборов из 20 уникальных чисел от 1 до 100 и одного признака (даты). Для каждой пары из набора надо найти все те, где совпадает больше n чисел, потом полученного пересечения сделать комбинаторные выборки по m уникальных чисел, сохранив признаки наборов. В результате должно получиться: выборка из m чисел, список признаков наборов, их которых она сделана, число пар таких наборов (но это - не точно). Андрейка делает это уже месяц, насилуя базу mysql, делая туда инсерты из пёрла и сравнивая строки. Другие пути решения он не приемлет по религиозным причинам. Массив у него ~5к наборов по 20 чисел. Я реализовал через битсет, маски и перестановки итератором без рекурсии. На ноде с генерацией исходного массива это отработало за 15-20 сек и заняло 70мб памяти. Возможно что-то надо дотестить, но думаю это будет как-то критично влиять на результат. Конечно, любая другая императивная реализация будет работать ничуть не хуже, писал ради proof of concept на обеде. Короче задача уже 2 недели как решена, но он все не уймется, я уже на jsfiddle залил, чтобы можно было кнопку нажать и результат получить, но упёрся, окуклился и не в какую. Уже устал над ним глумиться, если честно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 12:08 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
miltorg Решение есть Наглое враньё. Решение, которое греет воздух вместо того, чтобы работать - это не решение. Это как если бы для того, чтобы зажечь лампочку надо было бы проводить 380 вольт в дом и сооружать огромный радиатор во всю крышу, чтобы на выходе получить энергосистему мощностью 10kW, которая выдаёт света в эквивалент 25W лампы накаливания на 2 часа, после чего надо демонтировать и менять радиатор. Если бы тебе в дом провели такое, ты бы не сказал, что задача по освещению решена, особенно при наличии доступных сведодиодных лампочек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 12:12 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
crutchmaster tchingiz, . Уже устал над ним глумиться, если честно. ну, и прекращай с глумлением. и в след.раз и не начинай. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 12:18 |
|
Пройтись по огромной таблице самой по себе сравнивая данные
|
|||
---|---|---|---|
#18+
Я убежден что есть миллион студентов олимиадников которые такие задачки щелкают как орехи. Назначте им цену. И дайте input/output. И сроки будут измерятся считанными часами. Глумится ни над кем не надо. Это не в духе sql.ru. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 12:22 |
|
|
start [/forum/topic.php?fid=16&fpage=3&tid=1339693]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 315ms |
total: | 442ms |
0 / 0 |