Cha*_*esS 3 mysql optimization
我有一个2 GB的mysql表,行500k行,我在没有负载的系统上运行以下查询.
select * from mytable
where name in ('n1', 'n2', 'n3', 'n4', ... bunch more... )
order by salary
Run Code Online (Sandbox Code Playgroud)
它需要一个文件存储,并在50到70秒之间完成.
按工资删除订单并在应用程序中进行排序时,总运行时间(包括排序)减少到大约25-30秒.但那仍然太过分了.
知道如何加快速度吗?
谢谢.
将名称列表放入临时表中,然后在两个表上执行内部联接.这种方法比为每行梳理整个列表要快得多.这是伪代码:
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
Run Code Online (Sandbox Code Playgroud)
另请注意,name应该有一个索引.这使事情变得更快.感谢Thomas发表此笔记.
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |