Skip to content

Instantly share code, notes, and snippets.

@andrey-helldar
Created June 29, 2019 21:40
Show Gist options
  • Save andrey-helldar/3fe2770e3b6932436078e55c86f09e3f to your computer and use it in GitHub Desktop.
Save andrey-helldar/3fe2770e3b6932436078e55c86f09e3f to your computer and use it in GitHub Desktop.
Предложите запрос на создание наиболее оптимальной MySQL таблицы user_scores, которая будет хранить результаты выполненных пользователями тестов и будет удовлетворять следующим требованиям:
# Предложите запрос на создание наиболее оптимальной MySQL таблицы `user_scores`,
# которая будет хранить результаты выполненных пользователями тестов и будет
# удовлетворять следующим требованиям:
#
# * предполагается хранение большого числа записей, несколько миллионов и больше;
# * поле user_id - обычный цифровой идентификатор пользователя;
# * поле is_winner - флаг, победитель или нет. В системе принято флаги хранить в виде y/n, где "y" - победитель, "n" - проигравший;
# * поле score - набранные очки, от 0 до 10 000
# * к данной таблице будет выполняться очень часто всего один вариант запроса:
SELECT
user_id,
is_winner,
score
FROM `user_scores`
WHERE is_winner = 'y'
ORDER BY score DESC
LIMIT 100
# create table:
CREATE TABLE `user_scores`(
`user_id` BIGINT UNSIGNED NOT NULL,
`is_winner` CHAR(1) NOT NULL DEFAULT 'n',
`score` SMALLINT NOT NULL DEFAULT 0,
KEY(`user_id`),
INDEX `is_winner_index` (`is_winner`)
) CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment