Быстрая выборка «случайной» записи из базы MySQL в 1 млн записей

| 28.01.2016 | 0 Comments

Т.к. вариант выборки случайных записей из базы миллионника не подходит:
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

Комментариев пока что нет. Вы будете первым!

Оставить комментарий