Это теоретический вопрос, основанный на приложении, которое у меня есть. Мне интересно, можно ли получить какую-то техническую информацию, помимо тестов скорости на моей системе.
У меня есть следующие две таблицы:
CREATE TABLE `files` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL DEFAULT '',
`processed` tinyint(1) unsigned NOT NULL DEFAULT '0',
`last_processed` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
и ...
CREATE TABLE `file_metas` (
`file_id` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL DEFAULT '',
`description` varchar(1000) NOT NULL DEFAULT '',
`keywords` varchar(1000) NOT NULL DEFAULT '',
PRIMARY KEY (`file_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Данные file_metas
представляют собой длинные текстовые строки о каждом файле из таблицы файлов. Каждый файл имеет только одну запись в таблице file_metas
, поэтому эти две таблицы можно объединить.
Мне интересно, как повлияет добавление длинных текстовых полей в таблицу files
на производительность операторов выбора, выполняемых в таблице files
, когда я не выбираю для title
, description
, или keywords
. Мне любопытно о технических деталях. Замедляет ли просто наличие текстовых полей в таблице запросы, не связанные с этими полями? Как это работает в целом с таблицами MySQL MyISAM? Есть ли веская причина хранить данные file_metas
в отдельной таблице?