Какая разница для индексации таблицы базы данных при выполнении SELECT наугад - PullRequest
0 голосов
/ 30 мая 2011

Недавно я разработал очень простое веб-приложение для опроса.Я использую MySQL для хранения своих данных.Каждый пользователь получает один «случайный» вопрос из таблицы базы данных.Мне нужно знать, поможет ли индексация повысить производительность поиска, в то время как «SELECT» выбирает случайные записи каждый раз.спасибо

Это команда SQL, которую я использую:

'SELECT * FROM iens2.review_phrases ORDER BY RAND() LIMIT 1'

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Если ваше «случайное» число является порядковым номером столбца последовательности вопроса (без пробелов), то индексация этого столбца последовательности, безусловно, помогает:

WHERE question.sequence_no = :rand

Если, однако, вы просто

ORDER BY RAND()

Тогда индекс не может помочь. С

ORDER BY id
LIMIT 1 OFFSET :rand

Индекс порядка по полю предложения немного поможет, но производительность все равно хуже, чем доступ к вашему вопросу по порядковому номеру

0 голосов
/ 30 мая 2011

Это помогло бы, выбирая их случайным образом, чтобы в какой-то момент получить доступ к данным, для которых предназначены индексы.

0 голосов
/ 30 мая 2011

ДА, индексирование определенно поможет вам.это увеличит производительность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...