MySQL 查询很慢

标签 mysql temp-tables bigdata

我有一个包含 1500 万到 2000 万行的 MySql 表。过去,我曾使用数据分区将性能提高 100% 以上。但是,现在,当我运行以下查询时,执行 queru 需要 60 多秒。

select state, gender, count(*) from big_data where gender in ('Sugar Daddy','Sugar Baby') group by state, gender

结果

[SQL]select state, gender, count(*) from big_data where gender in ('Sugar Daddy','Sugar Baby') group by state, gender

Affected rows: 0
Time: 59.390s

在解释中我发现: 99% 的时间都花在了复制到临时表上!我怎样才能提高这个查询的性能?

enter image description here enter image description here

架构和解释:

enter image description here

enter image description here

最佳答案

由于 IN 实际上是一个释义的 OR 列表,您可以尝试使用 UNION 而不是利用 gender 上的索引;像这样:

select state, gender, count(*) 
from big_data 
where gender = 'Sugar Daddy' 
group by state
UNION
select state, gender, count(*) 
from big_data 
where gender  = 'Sugar Baby' 
group by state
order by state, gender

关于MySQL 查询很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555466/

相关文章:

mysql - 如何根据一列中的值将唯一值选择到 mysql 表中?

php - 从性能的角度来看,将 MySQL 临时表用于高使用率的网站功能的效率如何?

python - 色调应用的错误

azure - 如何将 outlook 项目 (.msg) 文件格式附件加载到配置单元表?

java - 在谷歌数据流中实现撤回

php - PDO ... SET NAMES utf8 危险吗?

mysql - 适用于 MySQL 和 MS Access 的多对多复选框字段

sql - 如何从临时表中检索字段名称 (SQL Server 2008)

mysql - 循环唯一插入到临时表MySql存储过程

php - 在mysql中使用自定义日期排序