Задать вопрос
Ответы пользователя по тегу MySQL
  • Найти источник дублированния даных в mysql?

    JeanLouis
    @JeanLouis
    Сделайте составной первичный ключ, чтобы он был уникален и вставляйте записи, используя INSERT IGNORE.
    Ответ написан
    2 комментария
  • Импорт массива данных в таблицу mySQL?

    JeanLouis
    @JeanLouis
    Последовательность действий:

    1. Прочитали сначала ID записей из файла. Выяснили SELECT'ом какие ID есть в базе данных, а какие нет. Это для мониторинга.

    2. Загрузили файл в таблицу с помощью " LOAD DATA INFILE" и ключа «REPLACE».
    Смотрите синтаксис этой комманды здесь: www.mysql.ru/docs/man/LOAD_DATA.html

    Вот и все, никаких лишних нагрузок. Это будет работать моментально.

    Если данных совсем много будет, то поэкспериментируется с дополнительным командами:

    SET autocommit = 0;
    SET UNIQUE_CHECKS=0;
    SET foreign_key_checks = 0;
    SET sql_log_bin = 0;

    // ваш запрос здесь

    commit;

    В моей задаче все они используются для ускорения загрузки большого количества данных.
    Ответ написан
    1 комментарий
  • Медленная сортировка по дате в Mysql

    JeanLouis
    @JeanLouis
    Попробуйте составной индекс (posts.id, posts.date).
    Ответ написан
    2 комментария
  • Выборка похожих результатов / MySQL

    JeanLouis
    @JeanLouis
    I. Если вы хотите посчитать количество одинаковых слов, то есть:
    Пупкин — встречается 3 раза
    Вася — встречается 2 раза и т.д, то это можно сделать либо с помощью хранимой процедуры, либо другим методом перебора (в php), либо (лучше) нормализовать данные, чтобы в одной строке было только одно слово, тогда можно будет использовать оператор GROUP BY.

    II. Если выхотите посчитать количество одинаковых фамилий (что я думаю вы и хотите), то базу данных опять же лучше нормальзовать по такому принципу:

    1. Самое длинное слово в строке брать за фамилию, если оно не оканчивается на «ич», «еч» и другие характериные для отчества окончания, в противном случае брать следующее наиболее длинное слово в строке.
    2. Самое короткое слово в строке брать за имя.

    Эти данные записать в таблицу с колонками Фамилия и Имя (или какой-то другой подходящий формат) при этом можно сохранить ключи на исходные заиписи. После чего по полю Фамилия можно использовать GROUP BY.

    Как-то так. Ваша проблема в ненормализованных данных.
    Ответ написан
  • HELP: Как работать с большим объемом данных? Oracle или Mysql?

    JeanLouis
    @JeanLouis
    Та же проблема была с курсорами в MySQL. Но у меня было много вставок, подумал тогда, что это связанно с перегенирацией индексов для каждой вставки. Но в вашем случае 1 вставка на 200 параметров… значит дело в чем-то другом.
    Ответ написан
    Комментировать