Автор Тема: Проверка на повторы новых данных с имеющимися - может ли такое MySQL?  (Прочитано 5370 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн evgeny_s

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как будет работать MySQL, например, с такими данными:
- создается база из более 100 тыс товаров.
- при вводе новых данных в БД необходимо проверить на возможность их наличия уже в базе (т.е. надо проверять на повторы при вводе новых данных).
  Может ли такое проделать СУБД MySQL? (если да, то как быстро, ведь надо сравнивать с 100 тыс.!)

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Ну проверь селектом. И если селект что-то тебе вернет не делай инсерт.
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
evgeny_s
если у тебя сравнение идет по уникальному ключу (primary или unique), то используй INSERT IGNORE ...
На Машине Тьюринга далеко не уедешь.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
fidget
вряд ли по ключу.
Скорее - по названию товара.

Женя, для бешеной собаки 100 тыщь не крюк.
Не дрейфь, усе будет быстро.

Оффлайн evgeny_s

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Спасибо, но вот еще уточнение. Алгоритм проверки на повтор многоступенчатый:

Сначала сравнивается по первому параметру(номер), потом по второму(название), и потом по третьему(код). Если все три варианта ничего не вернули - то тогда новые данные - действительно новые (простите за каламбур) и их можно исертить.

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
А почему нельзя так?
SELECT FROM `blablaWHERE `number`=\'$number\' AND `name`=\'$name\' AND `code`=\'$code\'
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Слушай, а почему нельзя сделать "код" ключевым полем (насколько я знаю он уникален для товара) и делать так, как fidget предложила? При правильной организации таблицы скорость возрастет значительно.
Или формируй что-нить типа "$number|$name|$code" в качестве значения для ключа.
TANSTAAFL

Оффлайн Fluke

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
Сделай уникальный ключ для всех трех полей. В MySQL это работает. А затем INSERT IGNORE ...

Оффлайн evgeny_s

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Спасибо большое. Так и сделаю.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28