Есть идеи как в базе оставить только уникальные строки?



  • В базе локальной таблица с 5ю столбцами. Около 1млн записей.
    Нужно оставить строки только с уникальной первой строкой. Т.е.
    Ваня 37 345 980 222
    Петя 22 232 890 333
    Ваня 12 215 940 122

    При том что Ваня две строки, нужно оставить одну любую.

    Что то у меня идей вообще нет, кроме как такой алгоритм
    0. создаем новую таблицу new

    1. в цикле берем строку из старой
    2. распарсиваем
    3. смотрим есть ли в new в первом столбце значение из 1го столбца старой
      3.1. если нет - добавляем всю строку в новую таблицу
      3.2. если есть, пропускаем, переходим к след строке.

    ps слабо представляю сколько уйдет времени на 1 млн строк.



  • 240 тыс строк обработал за 3часа.
    у меня 3700000 строк.



  • @kuzkuz said in Есть идеи как в базе оставить только уникальные строки?:

    240 тыс строк обработал за 3часа.

    Вот поэтому для больших баз используется Mysql. Там в три счета можно это все отсортировать. Возьми полноценные языки программирования: php или js, который прямо в коробке БАС вшит. Js должен быстро отработать.



  • @olegtut php в БАС? ого.
    Я на php норм шарю, но как оно в бас работает я хз.

    На Mysql с базой у сайта тоже работаю, да, там бы можно было одним запросом выбрать все строки с уникальным 1м столбцом...насколько я помню.

    ps как я понимаю тягомотина из -за того что надо каждую строку распарсивать.

    ps2 а реально импортировать эту таблицу в Mysql и там уже отработать и вернуть в эту базу, вот интересно....



  • @kuzkuz said in Есть идеи как в базе оставить только уникальные строки?:

    Я на php норм шарю, но как оно в бас работает я хз.

    Я имел ввиду js, не php. Php годится для распарса отдельно от БАС, если есть такая возможность. Если поиграться с БАС, то можно импортировать и в Mysql. Во-первых, из монго можно получить целиком список всех строк в массив. Разбить массив по 100k. Далее либо вставить массив через модуль Mysql, либо нативно через импорт txt через phpmyadmin. Можно еще экспортировать в формат csv прямо из менеджера базы. Ну а чтобы так не морочиться, нужно изначально выбирать архитектуру на Mysql для серьезных проектов на БАС, потому что база из коробы в БАС кастрированная и медленная, она эффективно годится лишь под разовые задачи. Да, тягомотина как раз из-за того, что нужно что-то распарсивать. Хотя в действии "выполнить код" это не должно быть медленно, потому что там используется js


Log in to reply