I read , но я все еще не понимаю, когда использовать нормальный индекс или уникальный индекс в MySQL.У меня есть таблица, в которой хранятся сообщения и ответы (id, parentId).Я установил три нормальных индекса для parentId, userId и editorId.
- Будет ли использование уникальных индексов полезным для меня, учитывая следующие типы запросов, которые я обычно выполняю?И почему?
Большинство моих запросов будут возвращать сообщение и его ответы:
SELECT * FROM posts WHERE id = @postId OR parentId = @postId ORDER BY postTypeId
Иногда я добавляю объединение для получения пользовательских данных:
SELECT * FROM posts
JOIN users AS owner ON owner.id = posts.userId
LEFT JOIN users AS editor ON editor.id = posts.editorId
WHERE id = @postId OR parentId = @postId ORDER BY postTypeId
В других случаях я могу попросить пользователя и его / ее сообщения:
SELECT * FROM users
LEFT JOIN posts ON users.id = posts.userid
WHERE id = @userId
Моя схема выглядит следующим образом:
CREATE TABLE `posts` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`posttypeid` int(10) NOT NULL,
`parentid` int(10) DEFAULT NULL,
`body` text NOT NULL,
`userid` int(10) NOT NULL,
`editorid` int(10) NOT NULL,
`updatedat` datetime DEFAULT NULL,
`createdat` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userId` (`userid`),
KEY `editorId` (`editorid`),
KEY `parentId` (`parentid`)
) ENGINE=InnoDB AUTO_INCREMENT=572 DEFAULT CHARSET=utf8