J'ai fait des expériences avec MongoDB et Redis ces derniers temps, et il semblerait qu'il y a souvent des cas où l'on serait de stocker un tableau d' id dans MongoDB ou Redis. Je vais rester avec le Redis, pour cette question, depuis que j'ai fais une demande sur la base de données MySQL À l'opérateur.
Je me demandais comment performant, il est de la liste d'un grand nombre (300-3000) de l'id de l'intérieur de l'opérateur, qui ressemblerait à quelque chose comme ceci:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Imaginer quelque chose d'aussi simple que des produits et des catégories de table qui vous pourrait normalement s'unissent afin d'obtenir les produits d'une certaine catégorie. Dans l'exemple ci-dessus, vous pouvez voir qu'en vertu d'une catégorie donnée dans le Redis ( category:4:product_ids
)- je retourner tous les id de produit à partir de la catégorie avec l'id 4, et placez-les dans le ci-dessus SELECT
de la requête à l'intérieur de l' IN
de l'opérateur.
Comment performant est-ce?
Est-ce un "ça dépend" de la situation? Ou est-il un béton "c'est (in)acceptable" ou "rapide" ou "lent" ou devrais-je ajouter un LIMIT 25
, ou n'est-ce pas de l'aide?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Ou dois-je couper le tableau des id de produit renvoyé par le Redis à limiter à 25 ans et seulement ajouter 25 id de la requête plutôt que de 3000 LIMIT
-ing à 25 à partir de l'intérieur de la requête?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Toutes les suggestions/commentaires est très apprécié!