Я хочу проверить, существует ли запись, если она будет, я увеличу ее поле счетчика на 1, если нет, я создам новую запись и инициализирую ее счет на 1. Достаточно просто, верно? Однако, похоже, я наткнулся на множество способов сделать это, и я не уверен, какой путь самый быстрый.
1) Я мог бы использовать это, чтобы проверить существующую запись, затем в зависимости, либо обновить, либо создать:
if(mysql_num_rows(mysql_query("SELECT userid FROM plus_signup WHERE userid = '$userid'")))
2) Или я должен использовать WHERE_EXISTS?
SELECT DISTINCT store_type FROM stores
WHERE EXISTS (SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type);
3) Или используйте это для вставки записи, затем, если она существует, обновите ее:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
4) Или, возможно, я могу установить столбец идентификатора в качестве уникального ключа, а затем просто подождать, чтобы увидеть, есть ли дублирующая ошибка при вводе? Тогда я мог бы обновить эту запись вместо этого.
У меня будет около 1 миллиона записей для поиска, первичный ключ в настоящее время - bigint. Все, что я хочу сопоставить при поиске в записях, это просто поле идентификатора bigint, в настоящий момент нет двух записей с одинаковым идентификатором, и я бы хотел сохранить его таким.
Редактировать: О, стреляй, я создал это не в том разделе. Я хотел поместить это в serverfault.