В последнее время я экспериментировал с Redis и MongoDB, и, похоже, часто бывают случаи, когда вы храните массив id в MongoDB или Redis. Я буду придерживаться Redis для этого вопроса, так как я спрашиваю об операторе MySQL IN.
Мне было интересно, как выполнить переименование большого числа (300-3000) id внутри оператора IN, который будет выглядеть примерно так:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Представьте себе что-то столь же простое, как таблица продуктов и категорий, которую вы обычно можете объединить, чтобы получить продукты из определенного категория. В приведенном выше примере вы можете увидеть, что в данной категории в Redis (category:4:product_ids
) я возвращаю все идентификаторы продуктов из категории с id 4 и помещаю их в вышеуказанный запрос SELECT
внутри оператора IN
.
Насколько это возможно?
Является ли это ситуацией? Или существует конкретное "это (un) приемлемо" или "быстро" или "медленно", или я должен добавить LIMIT 25
, или это не помогает?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Или мне нужно обрезать массив идентификатора продукта, возвращаемого Redis, чтобы ограничить его до 25 и добавить 25 запросов к запросу, а не 3000, а LIMIT
- до 25 изнутри запроса?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Любые предложения/отзывы очень ценятся!