Forum Webscript.Ru
Общие => Базы данных => Тема начата: evgeny_s от 30 Августа 2002, 09:54:38
-
Как будет работать MySQL, например, с такими данными:
- создается база из более 100 тыс товаров.
- при вводе новых данных в БД необходимо проверить на возможность их наличия уже в базе (т.е. надо проверять на повторы при вводе новых данных).
Может ли такое проделать СУБД MySQL? (если да, то как быстро, ведь надо сравнивать с 100 тыс.!)
-
Ну проверь селектом. И если селект что-то тебе вернет не делай инсерт.
-
evgeny_s
если у тебя сравнение идет по уникальному ключу (primary или unique), то используй INSERT IGNORE ...
-
fidget
вряд ли по ключу.
Скорее - по названию товара.
Женя, для бешеной собаки 100 тыщь не крюк.
Не дрейфь, усе будет быстро.
-
Спасибо, но вот еще уточнение. Алгоритм проверки на повтор многоступенчатый:
Сначала сравнивается по первому параметру(номер), потом по второму(название), и потом по третьему(код). Если все три варианта ничего не вернули - то тогда новые данные - действительно новые (простите за каламбур) и их можно исертить.
-
А почему нельзя так?
SELECT * FROM `blabla` WHERE `number`=\'$number\' AND `name`=\'$name\' AND `code`=\'$code\'
-
Слушай, а почему нельзя сделать "код" ключевым полем (насколько я знаю он уникален для товара) и делать так, как fidget предложила? При правильной организации таблицы скорость возрастет значительно.
Или формируй что-нить типа "$number|$name|$code" в качестве значения для ключа.
-
Сделай уникальный ключ для всех трех полей. В MySQL это работает. А затем INSERT IGNORE ...
-
Спасибо большое. Так и сделаю.