Forum Webscript.Ru

Общие => Базы данных => Тема начата: evgeny_s от 30 Августа 2002, 09:54:38

Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: evgeny_s от 30 Августа 2002, 09:54:38
Как будет работать MySQL, например, с такими данными:
- создается база из более 100 тыс товаров.
- при вводе новых данных в БД необходимо проверить на возможность их наличия уже в базе (т.е. надо проверять на повторы при вводе новых данных).
  Может ли такое проделать СУБД MySQL? (если да, то как быстро, ведь надо сравнивать с 100 тыс.!)
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: Metaller от 30 Августа 2002, 10:51:13
Ну проверь селектом. И если селект что-то тебе вернет не делай инсерт.
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: fidget от 30 Августа 2002, 11:21:39
evgeny_s
если у тебя сравнение идет по уникальному ключу (primary или unique), то используй INSERT IGNORE ...
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: Меняздесьдавнонет от 30 Августа 2002, 12:40:04
fidget
вряд ли по ключу.
Скорее - по названию товара.

Женя, для бешеной собаки 100 тыщь не крюк.
Не дрейфь, усе будет быстро.
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: evgeny_s от 30 Августа 2002, 13:27:31
Спасибо, но вот еще уточнение. Алгоритм проверки на повтор многоступенчатый:

Сначала сравнивается по первому параметру(номер), потом по второму(название), и потом по третьему(код). Если все три варианта ничего не вернули - то тогда новые данные - действительно новые (простите за каламбур) и их можно исертить.
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: Metaller от 30 Августа 2002, 13:30:54
А почему нельзя так?
SELECT * FROM `blabla` WHERE `number`=\'$number\' AND `name`=\'$name\' AND `code`=\'$code\'
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: Maniac от 30 Августа 2002, 21:42:39
Слушай, а почему нельзя сделать "код" ключевым полем (насколько я знаю он уникален для товара) и делать так, как fidget предложила? При правильной организации таблицы скорость возрастет значительно.
Или формируй что-нить типа "$number|$name|$code" в качестве значения для ключа.
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: Fluke от 01 Сентября 2002, 12:13:53
Сделай уникальный ключ для всех трех полей. В MySQL это работает. А затем INSERT IGNORE ...
Название: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?
Отправлено: evgeny_s от 02 Сентября 2002, 15:25:26
Спасибо большое. Так и сделаю.