1
我有一张1510万条记录的表。我正在运行以下查询来处理重复检查的记录。使用正确的索引优化mysql查询
select id, name, state, external_id
from companies
where dup_checked=0
order by name
limit 500;
当我使用EXPLAIN扩展上它使用的index_companies_on_name指数这仅仅是对公司名称的指标告诉我的查询。我假设这是由于订购。我试图创建基于名称和dup_checked字段的其他索引,希望它会使用这个,因为它可能会更快,但它仍然使用index_companies_on_name索引。
最初它速度不够快,但现在我们已经下降到330万条记录,并且这个查询最多需要90秒才能执行。我不太确定还有什么可以做得更快。是一个不同的索引答案或我没有想到的其他东西?谢谢。
通常情况下,您会构建索引以首先包含'WHERE'条件,其次''ORDER'条件。在这种情况下:'dup_checked,name'。 – tadman
如何指定索引中字段的顺序?我正在使用mysql工作台,它只允许你勾选索引中包含哪些字段。并且这会对性能产生重大影响吗? –
我也想知道如果我处理500条记录并将它们的dup_checked标志标记为true,那将需要reindex更新正确吗?意思可能会减慢它? –