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