Я пытаюсь найти способ получить случайный выбор из большого набора данных.
Мы ожидаем, что набор вырастет до ~ 500K записей, поэтому важно найти способ, который будет продолжать работать хорошо, пока набор растет.
Я испробовал технику из: http://forums.mysql.com/read.php?24,163940,262235#msg-262235 Но это не совсем случайно и не очень хорошо с предложением LIMIT
, вы не всегда получаете желаемое количество записей.
Так что я подумал, поскольку PK - это auto_increment, я просто генерирую список случайных идентификаторов и использую предложение IN, чтобы выбрать нужные мне строки. Проблема с этим подходом состоит в том, что иногда мне нужен случайный набор данных с записями, имеющими специфический статус, статус, который находится не более чем в 5% от общего набора. Чтобы это работало, мне сначала нужно выяснить, какой идентификатор я могу использовать, который имеет этот определенный статус, так что это тоже не сработает.
Я использую mysql 5.1.46, механизм хранения MyISAM.
Может быть важно знать, что запрос на выбор случайных строк будет выполняться очень часто, а таблица, из которой он выбирается, часто добавляется.
Любая помощь будет принята с благодарностью!