Быстрая выборка «случайной» записи из базы MySQL в 1 млн записей
Т.к. вариант выборки случайных записей из базы миллионника не подходит:
SELECT * FROM pages WHERE in_sitemap=0 ORDER BY RANDOM() LIMIT 10;
то я все думал, как бы быстрее это делать… и понял, что и не нужно выбирать случайные записи :) Достаточно делать смещение по ID последней выбранной записи.
SELECT * FROM pages WHERE id>15 AND in_sitemap=0 LIMIT 10
, где 15 — это ID записи, которая была выбрана в предыдущем запросе.
Соответственно следующий запрос будет примерно таким:
SELECT * FROM pages WHERE id>25 AND in_sitemap=0 LIMIT 10
То есть, делая каждый раз новые запросы — из базы будут выводиться новые «случайные» записи. Для этого нужно просто куда-нибудь записывать (например в файл) последний выбранный ID:
SELECT * FROM pages WHERE id>$last_id AND in_sitemap=0 LIMIT 10
Когда будет достигнут предел ID, то нужно просто обнулить $last_id, чтобы все пошло заново по кругу.
Категория: Программирование
Комментари (0)
Trackback URL | Comments RSS Feed
Комментариев пока что нет. Вы будете первым!