Останнім часом я експериментував з Redis та MongoDB, і, здається, часто трапляються випадки, коли ви зберігаєте масив ідентифікаторів як у MongoDB, так і в Redis. Я дотримуватимусь Redis для цього питання, оскільки я запитую про оператор MySQL IN .
Мені було цікаво, наскільки ефективно виконати перелік великої кількості (300-3000) ідентифікаторів всередині оператора IN, які виглядатимуть приблизно так:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Уявіть щось таке просте, як таблиця товарів і категорій, до якої ви зазвичай можете ПРИЄДНАТИСЯ, щоб отримати товари з певної категорії . У наведеному вище прикладі ви можете бачити, що під даною категорією в Redis ( category:4:product_ids
) я повертаю всі ідентифікатори товару з категорії з ідентифікатором 4 і розміщую їх у наведеному вище SELECT
запиті всередині IN
оператора.
Наскільки це ефективно?
Це ситуація "це залежить"? Або є конкретне "це (не) прийнятно" або "швидко" або "повільно", чи я повинен додати знак LIMIT 25
, чи це не допомагає?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Або я повинен обрізати масив ідентифікаторів товару, що повертаються Redis, щоб обмежити його значенням 25 і додати лише 25 ідентифікаторів до запиту, а не 3000 і LIMIT
-ing до 25 зсередини запиту?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Будь-які пропозиції / відгуки дуже вдячні!