Вставка записей без наличия ID - проблема с реализацией

Духовность™

Продвинутый новичок
Вставка записей без наличия ID - проблема с реализацией

Привет.

Прошу прощения за возможно, банальные вопросы.

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

Посему при каждом посте нужно проверять наличие таких слов в таблице слов, в зависимости от наличия, либо вставлять их в таблицу, либо возвращать ID слова, после чего проверять наличие связки в таблице связей статья-слово

Меня смущает моя реализация. Процесс при посте сейчас происходит примерно следующий:

PHP:
		$keywords = explode(',', $_POST['article_keywords']);
		clearRequest($keywords);
		$keywords = array_unique($keywords);

		foreach ($keywords as $word)
		{
			if (!$word) {
				continue;
			}
			// Смотрим, есть ли такое слово в таблице слов
			$res = $db->query('SELECT id_word FROM articles_keywords WHERE word = "?"', $word);
			
			// Слова такого нет - вставляем новую заапись
			if (!$id_word = $res->getOne())
			{
				$db->query('INSERT INTO articles_keywords VALUES(NULL, "?")', $word);
				$id_word = $db->getInsertId();
			}
			
			// Проверяем наличие записи связи в таблице статья-слово
			$res = $db->query('SELECT
									id
								FROM
									article_keywords_centre
								WHERE
									id_article = ?
								AND
									id_word = ?', $id_article, $id_word);

			// Связи ещё нет - создаем
			if (!$id_centre = $res->getOne())
			{
				$res = $db->query('INSERT INTO article_keywords_centre VALUES(NULL, ?, ?)', $id_article, $id_word);
			}
		}
вот собственно... меня что смущает - количество запросов к СУБД. Например, если будет 5 слов указано, нужно сделать 15 запросов! Это как вообще, нормально?
 

Dovg

Продвинутый новичок
SELECT id_word FROM articles_keywords WHERE word in ('word1','word2',...);
а потом в цикле разобрать
те, которые нет, вставляем


тоже самое по статьям
выбираем все ключевые слова для данной статьи один запросом, разбираем, отсутствующие вставляем

--
проверь, вдруг так будет быстрее
 

Bitterman

Новичок
ИМХО, добавление тегов к статье не настолько частая операция, чтобы беспокоиться из-за большого количества запросов. Разве что из любви к искусству :)
 
Сверху