как увеличить производительность вставки базы данных mysql

работая над проектом PHP, связанным с очисткой веб-страниц, и моя цель - сохранить данные в базе данных mysql, я использую уникальный ключевой индекс для 3 индексов в таблице с 9 столбцами, а количество записей превышает 5 тыс.

  1. Должен ли я проверять уникальные данные на уровне программы, например, помещать значения в массивы, а затем сравнивать их перед вставкой в ​​​​базу данных?
  2. есть ли способ ускорить вставку моей базы данных?

person Khalid Khan    schedule 18.07.2013    source источник
comment
можете ли вы подробнее рассказать о том, что вы вставляете, и если это отдельные запросы, и если вы выполняете совпадения в первую очередь.   -  person azngunit81    schedule 18.07.2013
comment
я вставляю названия компаний со средней длиной символов 30, среднюю длину уличных адресов 40, веб-сайт и т. Д. Я сопоставляю на уровне базы данных, а не в программе   -  person Khalid Khan    schedule 18.07.2013


Ответы (5)


Никогда не создавайте дублирующую таблицу, это шаблон анти-SQL, который усложняет работу с вашими данными.

Возможно, PDO и подготовленный оператор дадут вам небольшой толчок, но не ждите от него чудес.

multible INSERT IGNORE также может дать вам небольшой импульс, но не ждите от него чудес.

Вы должны сгенерировать запрос с несколькими вставками, например так

INSERT INTO database.table (столбцы) VALUES (значения), (значения), (значения) Имейте в виду, чтобы не превышать максимальный размер пакета, который будет иметь mysql. таким образом, индексный файл необходимо обновить один раз.

person Raymond Nijland    schedule 10.08.2013

Вы можете создать дубликат таблицы, которая у вас есть в настоящее время, за исключением отсутствия индексов ни в одном поле. Сохраните данные в этой таблице.

Затем используйте события для перемещения данных из временной таблицы в основную таблицу. Как только данные будут перемещены в основную таблицу, удалите их из временной таблицы.

person Community    schedule 18.07.2013

Вы можете следить за своими обновлениями с помощью тригера. Вы должны обновить таблицу, и вы должны правильно запустить эту таблицу.

person user2583040    schedule 18.07.2013

используйте функцию PDO, mysqli_*, чтобы увеличить вставку в базу данных

person Amy    schedule 18.07.2013

Вы можете использовать «INSERT IGNORE» в своем запросе. Таким образом, запись не будет вставлена, если будут нарушены какие-либо уникальные ограничения.

Пример:

INSERT IGNORE INTO table_name SET name = 'foo', value = 'bar', id = 12345;
person Tim Van Dijck    schedule 19.07.2013