Mysql查询优化

Mysql查询优化,sql,mysql,query-optimization,Sql,Mysql,Query Optimization,我有两个表:表1有4lac(400000)条记录,其他表有100条记录 我正在尝试以下查询: SELECT DISTINCT t1.id as id FROM table1 t1 JOIN table2 t2 ON t2.f_id = t1.id AND t1.action = 0; 我正在使用MYISAM引擎。t1.id和t2.f_id是相同的,并且是索引的 此查询需要30秒。有没有办法使它更快 在t1.action,t1.id上设置一个索引,在t2.f_

我有两个表:表1有4lac(400000)条记录,其他表有100条记录

我正在尝试以下查询:

SELECT DISTINCT t1.id as id 
FROM table1 t1 
JOIN table2 t2 ON t2.f_id = t1.id 
              AND  t1.action = 0;
我正在使用MYISAM引擎。t1.id和t2.f_id是相同的,并且是索引的


此查询需要30秒。有没有办法使它更快

t1.action,t1.id
上设置一个索引,在
t2.f_id

上设置一个索引
t1.action,t1.id
上设置一个索引,在
t2.f_id

上设置另一个索引,确保在
表1.id
表1.action
表2.f_id
上设置索引,假设两个表上都没有其他索引导致性能问题,这应该更接近最优:

SELECT
     DISTINCT t1.id AS id
FROM
     table1 AS t1
     JOIN table2 AS t2 ON t2.f_id = t1.id
WHERE
     t1.action = 0

确保在
table1.id
table1.action
table2.f_id
上有一个索引,并且假设两个表上都没有导致性能问题的其他索引,这应该更接近最优:

SELECT
     DISTINCT t1.id AS id
FROM
     table1 AS t1
     JOIN table2 AS t2 ON t2.f_id = t1.id
WHERE
     t1.action = 0

第一步是在
table1
上添加一个索引,将
id
action
放在一起


在查询中引入
distinct
也会降低查询速度。

第一步是在
表1
上添加一个索引,该索引同时涵盖
id
action

distinct
引入查询也会降低查询速度