Изучая внутренности таксономии (функционал и как он реализован на уровне кода) обнаружил интересную функцию
taxonomy_get_term_by_name($name)
которая возвращает данные по названию термина
$db_result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t WHERE LOWER('%s') = LOWER(t.name)", 't', 'tid'), trim($name));
забавно то что структура данных
CREATE TABLE `term_data` (
`tid` int(10) unsigned NOT NULL auto_increment,
`vid` int(10) unsigned NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`description` longtext,
`weight` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`tid`),
KEY `vid` (`vid`)
) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 AUTO_INCREMENT=44 ;
не содержит ключа для name
из чего следует что если таксономия будет использоваться очень обширно - использоваине этой функции крайне нежелательно. Либо добавить ключ
ALTER TABLE `term_data` ADD INDEX(`name`)
Комментарии
А зачем нужен ключ для name?
Ключ может понадобиться, если часто используются теги. А вообще такие вещи лучше выявлять с помощью devel^module - ибо этот ключ может изменить план выполнения других запросов.