Как поля, не выбранные в запросе MySQL, влияют на скорость запроса для полей, на которых я выбираю? - PullRequest
1 голос
/ 31 октября 2011

Это теоретический вопрос, основанный на приложении, которое у меня есть. Мне интересно, можно ли получить какую-то техническую информацию, помимо тестов скорости на моей системе.

У меня есть следующие две таблицы:

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 в отдельной таблице?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...