Задать вопрос

Почему медленно импортируется таблица в mysql?

написал скрипт который импортирует таблицу из access в mysql на php.
скрипт работает на windows.
1) когда в конфиге прописан адрес mysql сервера 127.0.0.1 то импорт происходит за пару секунд (1500 записей)
2) когда в конфиге прописан localhost то начинаются тормоза, скорость примерно 1 запись в секунду
3) когда в конфиге прописан удаленный сервер то скорость тоже маленькая примерно 1 запись за несколько секунд

как это можно понять? что можно сделать?

upd. удаленный сервер на openbsd
upd2.
<?php
include 'config.php';
$today = date("d.m.Y, H:i"); 

$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$patch_mdb", '', '');

$table_lo="SELECT * FROM mysql_tehnika2";
$run_lo=odbc_exec($conn,$table_lo);

 if (!$run_lo)
  {exit("Error in SQL");}

  while (odbc_fetch_row($run_lo))
  {
  $id=odbc_result($run_lo,"id");
  ......

@mysql_connect("$address", "$user", "$password");
@mysql_select_db("$base_mysql");


$query = "INSERT IGNORE into $table(id, ... )
VALUES('$id', .....)";

$query2 = iconv("", "UTF-8", "$query");
mysql_query($query2);

mysql_close();
  }
// ---------------------------------------------------------------------

 
odbc_close($conn);

?>
  • Вопрос задан
  • 2626 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 5
benbor
@benbor
Помог ответ - не забудь лайкнуть
Может вы коннектитесь к mysql на каждую строчку?
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Что-то не так с ресолвом DNS. У Windows помнится это частенько бывает.

1) Проверьте что в hosts есть запись для localhost
2) Нужно смотреть настройки mysql.
Ответ написан
deemytch
@deemytch
linux root, ruby/perl programmer, sql, backend.
1. Винда может ломиться сначала на ::1, а потом на 127.0.0.1
2. Что написано в hosts ?
Ну и всё вытекающее из этого
Ответ написан
@iSensetivity
бухгалтер, програміст-самоук
Вы подключаетесь к БД для каждой вставки. Нужно так: подключиться сделать вставку - отключиться.
Исправьте код. Должно помочь.

// Подключаемся.
mysql_connect("$address", "$user", "$password");
mysql_select_db("$base_mysql");

// Цикл со вставкой.
while (odbc_fetch_row($run_lo)) {
  $id=odbc_result($run_lo,"id");
  ......

$query = "INSERT IGNORE into $table(id, ... )
VALUES('$id', .....)";

$query2 = iconv("", "UTF-8", "$query");
mysql_query($query2);
  }

// Отключаемся.
mysql_close();
Ответ написан
Комментировать
@unix0 Автор вопроса
всем спасибо, убрал подключение к базе из цикла, все заработало!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы