(${public_campaign_ids}) AND userId = ? 公開中のキャンペーン一 覧を取得する SELECT id as public_campaign_ids FROM CampaignMasterTable WHERE …… Aurora MySQL DynamoDB ユーザーにターゲティン グされているユーザーを 絞る
CampaignID IN (${public_campaign_ids_1}) AND userId = ? DynamoDB ユーザーにターゲティン グされているユーザーを 絞る SELECT campaign_id FROM TargetingUserCampaignTable WHERE CampaignID IN (${public_campaign_ids_2}) AND userId = ? SELECT campaign_id FROM TargetingUserCampaignTable WHERE CampaignID IN (${public_campaign_ids_n}) AND userId = ? …… public_campaign_ids = (public_campaign_ids_1, public_campaign_ids_2, .. ,public_campaign_ids_n)
IN (${public_campaign_ids}) AND userId = ? 公開中のキャンペーン一 覧を取得する SELECT id as public_campaign_ids FROM CampaignMasterTable WHERE …… Aurora MySQL DynamoDB ユーザーにターゲティン グされているユーザーを 絞る 改善前
る 公開中かどうか関わらず それぞれ実行して、On MemoryでOverlap された データ(共通部分)を結果 にする 改善策 SELECT id as public_campaign_ids FROM CampaignMasterTable WHERE …… DynamoDB.GetItem by userID partition key つまり userIDのpartitionの全データをとる