Перемешать данные в таблице
В БД MySQl имеется таблица состоящая из 1 столбца/поля `word` varchar(60) NOT NULL, на этом столбце стоит стоит первичный ключ.
В таблице 12млн записей.
Не могу придумать оптимального решения для того, чтобы вытащить случайную запись. Т.к. таблица большая, то ORDER BY RAND очень и очень долго выполняется.
Попробовал еще таким способом: SELECT `word` FROM `words` LIMIT N, 1, где N - случайное число от 0 до 12млн. Подобный запрос выполняется за 8 секунд, что так же меня не устраивает.
Как вариант вижу создание дополнительного столбца наполненного случайными числами от 0 до 12 млн. А после сортировать поле по возрастанию, и брать по 1 записи с начала и удалять её после обработки.
Есть ли какие-то идеи/советы как решить задачку оптимальнее?
|