有一个包含 25.000.000 个条目的表,我有以下查询,该查询每 2 秒启动一次,这会导致非常高的负载(在 Amazon AWS 中高达 40 AAS)。执行时间需要20秒到5分钟,甚至会导致用户浏览器超时,掉线率很高。
SELECT COUNT ( * ) AS `chk`
FROM ( SELECT `item_id`
FROM `items`
WHERE `item_status` IN (...)
AND `item_type` = ?
AND `user_id` != ?
AND `item_name` IN (...)
LIMIT 3
) AS OTHERS
;
Run Code Online (Sandbox Code Playgroud)
索引优化已完成 - 、、 和user_id
均已item_name
建立索引(每列一个索引)。item_type
item_status
更多信息:
varchar
128请注意,在大约 50% 的情况下,MySQL 必须检查完整的表,因为找到的项目少于 3 个。因此,该限制仅在商品数量超过 3 件的情况下才有用。 …