Я работаю с программой, в которой мне нужно проверить сотни переменных, чтобы убедиться, что они уже есть в базе данных. Обычно для запуска требуется некоторое время. Я использую INSERT IGNORE для всех переменных. Должен ли я изменить это, чтобы сначала проверить, существуют ли они в базе данных? Какая функция увеличивает время ожидания для конечного пользователя?

В этой программе большинство вставок будут дубликатами. Так что такая ситуация будет возникать довольно часто.

Может быть, имеет смысл избавиться от дубликатов перед попыткой вставки? (Я работаю с библиотекой PHP IMAP и электронной почтой)

0
Bob Cavezza 26 Мар 2011 в 17:51
2
Почему бы тебе не проверить это самому?
 – 
Your Common Sense
26 Мар 2011 в 17:54
Похоже, вам просто нужно сделать столбцы UNIQUE и позволить базе данных решить, нужно ли их добавлять.
 – 
D.N.
26 Мар 2011 в 17:55
@D.N.: поскольку он сказал, что уже использует INSERT IGNORE, держу пари, он уже указал это поле (поля) как уникальное ;-)
 – 
zerkms
26 Мар 2011 в 17:58

1 ответ

Прежде всего, определенно не делайте SELECT, а затем INSERT, это совершенно бессмысленно. Вместо этого подумайте о том, что ниже;

  • Что это за настройки? Должны ли они действительно принадлежать базе данных или файлу конфигурации PHP?
  • Исследуйте LOAD DATA INTO, который по умолчанию использует IGNORE для дублирующегося ключа.
  • Неужели надо все время проверять? Наверняка это будет сделано только при установке/настройке?
0
Gary Green 26 Мар 2011 в 18:01
Это сообщения электронной почты, а не настройки. Вы когда-нибудь пользовались услугами веб-почты?
 – 
Your Common Sense
26 Мар 2011 в 18:07
Это происходит с каждым из наших пользователей - сотни раз в день.
 – 
Bob Cavezza
26 Мар 2011 в 19:52