Я использую mysql (innoDB). У меня есть таблица больших пользователей с этими столбцами: user_id, last_action_time. User_id - это уникальный первичный ключ. Таблица имеет около 5 миллионов строк.колонка timestamp индексации mysql, которая часто обновляется
+------------------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-----------+------+-----+---------+-------+
| user_id | int(11) | NO | | NULL | |
| last_action_time | timestamp | YES | | NULL | |
+------------------+-----------+------+-----+---------+-------+
Всякий раз, когда пользователь делает действие на сайте, я обновляю метку времени в столбце last_action_time. Для системы Back-office мне нужно показать 30 последних пользователей, совершивших действие на сайте. Что-то вроде этого:
SELECT user_id,last_action_time FROM user_table ORDER BY last_action_time DESC LIMIT 30
Это занимает много времени. Я думал об индексировании last_action_time, но я боюсь, что у меня будут проблемы, потому что столбец last_action_time получает обновление очень часто. Как я могу получить столбец с индексом, но также часто обновляемый
Зависит от того, насколько тяжелыми становятся ваши данные, и если вы можете жить с более медленными обновлениями. Вы всегда можете отказаться от индекса позже. –
И вы также можете указать * Разметка * Попробуйте. –
Первый раз, когда я слышу о разделении, я проверю его –