这个问题需要对MySQL数据库中索引创建的广泛问题做出通用答案。
我们来看这个例子:
CREATE TABLE IF NOT EXISTS `article` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`published` tinyint(1) NOT NULL DEFAULT '0',
`author_id` int(11) unsigned NOT NULL,
`modificator_id` int(11) unsigned DEFAULT NULL,
`category_id` int(11) unsigned DEFAULT NULL,
`title` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`headline` text COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci NOT NULL,
`url_alias` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`priority` mediumint(11) unsigned NOT NULL DEFAULT '50',
`publication_date` datetime NOT NULL,
`creation_date` datetime NOT NULL,
`modification_date` datetime NOT NULL,
PRIMARY KEY (`id`)
);
在这样的示例中,可以对不同的标准执行各种查询:
e.g:
SELECT id FROM article WHERE NOT published AND category_id = '2' ORDER BY publication_date;
在许多表中,您可以看到各种状态字段(如此处发布的),日期字段或引用字段(如author_id或category_id)。应该选择什么策略来制作索引?
可以在以下几点开发:
我知道EXPLAIN语句可以用来知道请求是否被优化,但是一些具体的理论内容真的比纯粹的经验方法更具建设性!