小编Kon*_*bas的帖子

MySQL:如何优化导致负载非常高的某个SELECT语句?

有一个包含 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_typeitem_status

更多信息:

  • 一个用户拥有 1 - 1.000.000 百万条条目
  • item_name 是varchar128
  • item_type 的基数为 7
  • item_status 的基数也是 7
  • 只需知道是否有三个或更多匹配项

请注意,在大约 50% 的情况下,MySQL 必须检查完整的表,因为找到的项目少于 3 个。因此,该限制仅在商品数量超过 3 件的情况下才有用。 …

mysql performance index query select

3
推荐指数
1
解决办法
1565
查看次数

标签 统计

index ×1

mysql ×1

performance ×1

query ×1

select ×1