0
我有一个从服务器端获取数据的数据表,我想通过添加索引来优化我的表,以便排序更快(现在,大约需要7秒来对60K行进行排序)添加索引到表
我的“复制创建语句到剪贴板”看起来是这样的:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` char(128) COLLATE utf8_unicode_ci NOT NULL,
`salt` char(5) COLLATE utf8_unicode_ci NOT NULL,
`joined` int(10) unsigned NOT NULL,
`name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`surname` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`role` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`photo` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`user_type` int(11) DEFAULT NULL,
`user_owner` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=81634 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
说我遇到的问题是,如果我用这个:
ALTER TABLE `users` ADD INDEX (`email`, `name`, `surname`, `user_type`) ;
只有电子邮件进行索引(LEA处只有电子邮件栏可以快速排序)。我不知道我能做些什么来添加其他索引列(或者如果它实际上对于优化它是很有用的)。
它似乎不适用于每列的单独索引。实际上,如果我只是执行ADD INDEX(电子邮件),这个索引对排序没有任何好处,但如果我执行ADD INDEX(电子邮件,姓名,用户类型),那么电子邮件列几乎立即被排序...任何想法为什么发生这种情况? – luqita
@luqita为这两种方式发布解释计划。 – Ariel
我不明白你的问题......解释两种方式显示相同的东西:( – luqita