Помогите оптимизировать логику запросов (+)

Bor-ka

Новичок
Помогите оптимизировать логику запросов (+)

Имеется массив с ключевыми словами $array

В массиве содержатся слова. В $page_id содержится ID страницы, для которой данный массив слов.

Необходимо вставить слова в таблицу слов - search_words_table а также вставить в таблицу соотвтетсвий страниц и поисковых слов - search_index_table

Индексы в search_words_table по search_words_id и search_words_word

Код работает для массива из 3500 слов примерно 11 секунд. Каким образом можно добиться сокращения времени работы или изменить логику?

PHP:
    	foreach ($array as $res)
		{
			$words_result = $mysql->select("SELECT search_words_id FROM search_words_table WHERE search_words_word = '".$res."' limit 0,1");

			# Если нет слова - вставляем
			if ($mysql->get_count_row() == 0) 
			{	
				$mysql->query("INSERT INTO search_words_table (search_words_word) values ('".$res."')");
				$word_id = mysql_insert_id();
			}	
			else # Если есть слово - получаем его ID
			{
				$row = mysql_fetch_array($words_result);
				# 
				$word_id = $row['search_words_id'];
			}
			
			$mysql->query("INSERT INTO search_index_table (search_words_id, search_page_id) values (".$word_id.",".$page_id.")");
		}
 

Bor-ka

Новичок
Таблицы:

PHP:
CREATE TABLE `search_words_table` (
  `search_words_id` int(11) NOT NULL auto_increment,
  `search_words_word` char(32) default NULL,
  PRIMARY KEY  (`search_words_id`),
  KEY `search_words_word` (`search_words_word`)
) TYPE=MyISAM AUTO_INCREMENT=1;

CREATE TABLE `search_index_table` (
  `search_index_id` int(11) NOT NULL auto_increment,
  `search_words_id` int(11) NOT NULL default '0',
  `search_page_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`search_index_id`),
  KEY `page_id_FK` (`search_page_id`),
  KEY `words_id_FK` (`search_words_id`)
) TYPE=MyISAM AUTO_INCREMENT=1;
 

chira

Новичок
объеденить запросы в один
1. в таблице search_words_table сделать индекс search_words_word уникальным
2. INSERT IGNORE INTO search_words_table (search_words_word) values ('word1'),('word2'),('word3'),('word4'),....
3. SELECT search_words_id FROM search_words_table WHERE search_words_word IN ('word1','word2','word3','word4',....)
4. INSERT INTO search_index_table (search_words_id, search_page_id) values ('word1','page1'),('word2','page1'),....
 
Сверху