Было бы интересно и наглядно увидеть совмещения снимка в оптическом диапазоне и радиоснимка, тогда можно было бы обойтись без текстового описания радиоснимка, но это не обязательно
К сожалению, когда писал статью не видел подобных решений в интернете. Можете скинуть ссылку?
Даже на stackoverflow предлагают селектить rand()*MAX(id)
такой подход не будет работать, если id распределены следующим образом:
1, 2, 3, 4, 555, 556, 557, три случайных random_from_php попадут между двумя неразрывными последовательностями и получим в итоге 555, 555, 555, конечно, можно вводить дополнительные условия (не выбирать уже выбранные), как-то анализировать распределение id, но это уже намного сложнее и медленнее
Не известно заранее, в каких пределах будут id товара, у которых category_id=5.
В общем случае они будут идти не по порядку (например 1, 2, 3, 555, 123444), а итеративно выбирать значения до тех пор, пока не получим нужные нам значения — медленно
Действительно, в таблице random_seed должно быть столько же значений, сколько в таблице, из которой нужно брать случайные строки + N записей, где N это максимально возможное значение random_from_php
Реальный пример из моей работы — выбор случайных категорий товаров из разных комбинаций (всего 4000000 записей):
«Обычный»: запрос
SELECT
osc1.*
FROM
object_category osc1
WHERE region_id=6
ORDER BY RAND()
LIMIT 10
Время выполнения: 1.726с; 1.851с; 1.803с; 1.784с
«Ускоренный» запрос:
SELECT
osc1.*
FROM
object_category osc1, random_seed rs
WHERE
osc1.id=(rs.id+564756) AND region_id=6
ORDER BY
rs.random_seed
LIMIT 10
Время выполнения: 0.007с; 0.010с; 0.006с; 0.008с
Половину статей ClusterM по заголовку угадал, когда они выходили :)
Даже на stackoverflow предлагают селектить rand()*MAX(id)
1, 2, 3, 4, 555, 556, 557, три случайных random_from_php попадут между двумя неразрывными последовательностями и получим в итоге 555, 555, 555, конечно, можно вводить дополнительные условия (не выбирать уже выбранные), как-то анализировать распределение id, но это уже намного сложнее и медленнее
В общем случае они будут идти не по порядку (например 1, 2, 3, 555, 123444), а итеративно выбирать значения до тех пор, пока не получим нужные нам значения — медленно
Действительно, в таблице random_seed должно быть столько же значений, сколько в таблице, из которой нужно брать случайные строки + N записей, где N это максимально возможное значение random_from_php
«Обычный»: запрос
SELECT
osc1.*
FROM
object_category osc1
WHERE region_id=6
ORDER BY RAND()
LIMIT 10
Время выполнения: 1.726с; 1.851с; 1.803с; 1.784с
«Ускоренный» запрос:
SELECT
osc1.*
FROM
object_category osc1, random_seed rs
WHERE
osc1.id=(rs.id+564756) AND region_id=6
ORDER BY
rs.random_seed
LIMIT 10
Время выполнения: 0.007с; 0.010с; 0.006с; 0.008с
К сожалению, html-оформление не отображается…