Стоит задача провести синхронизацию данных двух баз, вернее даже не баз, а таблиц. Структура примерно такая: |dealer|client|addres|phone|etc dealer+client уникально. С добавлением недостающих строк вопросов никаких. А вот с обновлением информации возник вопрос: как лучше сделать: 1. Без разбору заменять данные из второй таблицы данными из первой (даже если данные совпадают). 2. Выбирать строки с различающимися данными и обновлять только их? Второй вариант мне кажется более правильным. Но не будет ли он более медленным, поиск по текстовым полям вещь не очень то быстрая. Как лучше реализовать подобное?
Оба варианта так себе. По хорошему, нужно как-то метить строчки в момент изменения. Как вариант еще - в одельном поле хранить хеши на основе данных и сравнивать их. Но лучше все же метить.
igordata Пару раз в сутки. Не чаще. MiksIr Надо бы. Но возможности такой нет. karakh Как я понимаю, это первый вариант SQL Запросом?
сколько записей в таблицах? Да, причем уже вместе с инсертом. Вообще я так понимаю нужно не синхронизировать два таблицы, а перенести данные из одной в другую Тогда идеальные воплощения первого варианта это вообще [sql]DROP TABLE tbl1; CREATE TABLE tbl1 SELECT * FROM tbl2;[/sql] [sql]TRUNCATE TABLE tbl1; INSERT INTO tbl1 SELECT * FROM tbl2;[/sql] Еще веселый вариант [sql]TRUNCATE TABLE tbl1; SELECT * INTO OUTFILE 'data.txt' FIELDS TERMINATED BY '|' FROM tbl2; LOAD DATA INFILE 'data.txt' INTO TABLE tbl1 FIELDS TERMINATED BY '|'; [/sql] Причем я практически уверен, что любой из этих вариантов быстрее, чем выбирать строки с различающимися данными при отсутствии идентификатора изменений.
karakh Записей пордяка пары миллионов. Как я понимаю, первые два варианта не подойдут из-за того, что базы данных разные, а вот 3-ий потестирую.. Спасибо.