mysql查询慢如何解决,如何优化此MySQL慢(非常慢)查询?

I have a 2 gb mysql table with 500k rows and I run the following query on a system with no load.

select * from mytable

where name in ('n1', 'n2', 'n3', 'n4', ... bunch more... )

order by salary

It takes a filesort and between 50 and 70 seconds to complete.

When removing the order by salary and doing the sorting in the application, the total runtime (including the sorting) cuts to about 25-30 seconds. But that's still far too much.

Any idea how I can speed this up?

Thank you.

解决方案

Drop the list of names into a temporary table and then do an inner join on the two tables. This way is much faster than combing that entire list for each row. Here's the pseudocode:

create temporary table names

(name varchar(255));

insert into names values ('n1'),('n2'),...,('nn');

select

a.*

from

mytable a

inner join names b on

a.name = b.name

Also note that name should have an index on it. That makes things go much faster. Thanks to Thomas for making this note.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值