|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Преобразование 11 совпадений в 10: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 03:38 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
После преобразования 12 в 11 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 03:44 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Готовая таблица. Остаётся только сортировка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 03:59 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Извините что долго не отвечал - делал по своему методу. Вот этот ваш код он для чего? 1. Для сортировки 1 миллиарда записей? 2. Для полного решения задачи? Это решение вашей задачи. Без всяких сортировок. На предыдущей странице обсуждают именно его. С примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 15:27 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
crutchmaster Как это будет работать? Текущее решение - из цифр сделать биты, например 1,2,3,4,7 заменить на 0x4F (0100 1111). Потом сделать декартово с побитовом "и", посчитать биты и оставить всё, где получится больше 10. Кстати, записывать справа налево совершенно необязательно. b'11110010' будет нагляднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 15:48 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
paver, Если ваше решение, столь простое и наглядное, и оно уже есть, не могли ли вы распечатать его, как сделал я. Используя мои входные данные на этой странице. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 16:26 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg paver, Если ваше решение, столь простое и наглядное, и оно уже есть, не могли ли вы распечатать его, как сделал я. Используя мои входные данные на этой странице. сможем проверить правильность наших решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 16:30 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
paver Данные (все 5000 записей) следует перевести в битовые величины длиной в 100 (ну или два раза по 50) битов. И именно так их хранить. Вместо строки "2_12_21_28_36_...", например, нужно получить битовую величину с единицами во 2, 12, 21 и так далее позициях. Получение количества совпадений чисел в 2 произвольных строках A и B - это количество бит в их побитовом произведении: SELECT BIT_COUNT(A & B). Т.е. при ежедневном добавлении новой строки нужно преобразовать ее список чисел в битовый формат (напр, в переменную A), после чего выполнить порядка 5000 произведений, Код: sql 1. 2. 3.
Если нужно единоразово прошерстить все строки Код: sql 1. 2. 3. 4.
Поскольку в MySQL максимальный диапазон ограничен 64 битами, придется использовать два поля по 50 бит. Ну и представить результат в формате, как нужно заказчмку. Вот честно не понимаю. Вы пишите что это полное решение моей задачи. Но вход даёте цифры: "2_12_21_28_36_...", На входе - цифры через пробел и с датой: 22264235 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 16:51 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Это представление данных. Смените представление. Это делается один раз. Попробую помедленнее и на примере. У вас есть 2 набора чисел: 1 3 6 9 3 6 7 8 Вам нужно найти количество совпадающих чисел. Это элементарная задача. 1. Меняете представление ваших наборов из символьного строк в битовый, где каждому числу будет соответствовать 1 в позиции, номер которой совпадает с числом. В примере это: 1 3 6 9 -> b'101001001' 3 6 7 8 -> b'001001110' 2. Получаете совпадающие числа путем побитового произведения исходных строк: b'101001001' & b'001001110' -> b'001001000', то есть 3 и 6 3. Количество совпавших чисел (т.е. количество 1 в результирующей строке) получаете с помощью BIT_COUNT() BIT_COUNT(b'101001001' & b'001001110') = 2 Для хранения ваших наборов потребуется поле BINARY(13) (13 x 8 = 104). Можно вместо существующего, можно дополнительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:02 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
paver, А почему вы упорно не хотите взять 2 строки из моего тестового исходного? Ок. Я специально выделю их для вас: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:05 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
paver, У меня такое ощущение, что вы пытаетесь рассказать о том, как находить совпадения в 2 строках. Я это решил по простому - загнал цифры в массивы и применил функцию которая ищит совпадения массивов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:07 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:12 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, переведите ваши строки в нули единицы (единицы будут стоять на позиции чисел в ваших строках) Просто никому неохота делать работу за другого. Пример 5 7 8 15 22 23 27 34 37 39 40 41 43 44 50 55 57 58 62 70 (на 5 7 8 15 22 23 27 34 37 39 40 41 43 44 50 55 57 58 62 70 позиции стоЯт единицы) 0000101100000010000001100010000001001011101100000100001011000100000001 и добить нулями до 99 знаков можете проверить, я мог ошибиться ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:16 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, так а ход решения где... как получить всевозможные сочетания по 10 из 20-ти. Мы же в скуэльном форуме. Перевести набор чисел в строку из 0 и 1 И так и хранить можно также сделать функцию - посимвольное сравнение 100 (99) символьной строки. Не надо будет хранить все комбинации по 10 из 20-ти чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:21 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, предлагаю упростить задачу. Пусть будут числа 1..9 и по 4 в строке переводим исходную 1_3_5_7 в нули-единицы 101010100 (справа добиваем нулями до 9-ти символов ) ...да, paver выше уже предлагал упростить... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:27 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, В начале, методом сравнения массивов цифр в строке - я вывожу количество совпадений строк: 22264236 Код предоставить не могу. Я ведь его за деньги писал - значит нужно разрешение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:41 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, Те, где 10 совпадение - получается что готовы к сортировке. Но там ещё есть 11 и 12 совпадений. Вот с ними я разбираюсь в дальнейшем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:44 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Вы опять, упорно решаете задачу сравнения срок. Повторю: Задача сравнения строк решена мной изначально, путём загона чисел в массивы и применения функции поиска дубликатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:52 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Код на Перле: Код: php 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:53 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, да это чушь полная...со стороны более чем странно "я не покажу потому что писал за деньги, а вы мне на моих данных покажите ваш код" поэтому предлагают упростить и использовать схематичные данные. если решаете массивами-циклами, то это вроде бы как для другого форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 17:59 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Alex_Ustinov, Мне нужно решить задачу, а не искать изыски. Мой код изначально был на Перл с использованием mySQL. Что не так? В конце, я делаю сортировку: select v.* from ( SELECT table_tmp.* , count(1) over(partition by d1) as cnt FROM table_tmp ) as v where cnt > 4; Что не так то? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 18:05 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Alex_Ustinov miltorg, да это чушь полная...со стороны более чем странно "я не покажу потому что писал за деньги, а вы мне на моих данных покажите ваш код " поэтому предлагают упростить и использовать схематичные данные. если решаете массивами-циклами, то это вроде бы как для другого форума. Я не просил код. Я просил решение. Потому, что я видел, что изначально, в качестве исходных берутся не те цифры. Поэтому и так долго на это не обращал внимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 18:08 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Но это, изначально решение - не про то - вызвало тут кучу восторгов. Может это и красиво. Может. По мне так - сравнение массивов красивей и проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 18:12 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorgне про то про то... от вас требуется перевести ваш набор чисел в 0 и 1, залить в таблицу чтобы никто не увидел код - я его спрятал, а то потом никому его не продать Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
вот решение в общем доступе https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b3c4ac6316e573c7ecf6facc2139e3dd единственное, что вам необходимо сделать - в связи с тем, что BIT работает с 64 разрядами - ранее было предложено разделить строку из 99 знаков на две части, и делать два сравнения, первые 50 нуликов единиц и оставшиеся. т.е. у вас будет 2 поля STR_BIT1 и STR_BIT2 типа BIT(50) И вот как раз первичную переработку своих данных и сделайте на Перле Бейсике Паскале... на чем угодно вот теперь обоснуйте, почему это решение - "не про то" авторЯ не просил код. Я просил решениеигра слов, решение указали, просто без кода вы не поняли. "Преобразование 11 в 10" и т.д - никому непонятное "решение" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2021, 19:35 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Люди упорно не видят исходное задание. В исходном задании 20 цифр. 20! Люди упорно не хотят понять - что всё уже сделано. И сделано изначально методом сравнения количества совпадений с помощью массивов - потому что так проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2021, 03:16 |
|
|
start [/forum/topic.php?fid=47&msg=40036426&tid=1828220]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 172ms |
0 / 0 |