私は最近RedisとMongoDBを試していますが、MongoDBまたはRedisのいずれかにIDの配列を格納する場合が多いようです。MySQL IN演算子について質問しているので、この質問についてはRedisを使用します。
IN演算子内に多数(300〜3000)のIDをリストすることは、どれほどパフォーマンスが高いのか疑問に思いました。これは次のようになります。
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
通常は一緒に結合して特定のカテゴリから製品を取得する、製品とカテゴリのテーブルのような単純なものを想像してみてください。上記の例では、Redis()の特定のカテゴリの下で、ID 4のカテゴリからすべての製品IDを返し、演算子内の上記のクエリに配置していることがわかります。category:4:product_ids
SELECT
IN
これはどのくらいのパフォーマンスですか?
これは「状況によって異なります」ですか?または、具体的な「これは(受け入れられない)」または「速い」または「遅い」LIMIT 25
がありますか、それとも追加する必要がありますか、それとも役に立ちませんか?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
または、Redisによって返される製品IDの配列をトリミングして25に制限し、クエリLIMIT
内から3000ではなく25 IDのみをクエリに追加して25に追加する必要がありますか?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
任意の提案/フィードバックは大歓迎です!