我正在编写一个需要高度优化的解决方案的 SQL 查询,以免超时。但我不知道如何不断优化以下 SQL 查询:
select distinct j.job,f.path,p.path
from fixes f, jobs j, paths p where f.job=j.id and p.id =f.path
and (p.path like '//Tools/Web/%' or p.path = '//Tools/Web');
我在以下字段(基本上是所有内容)上创建了索引:
- 工作.id
- 工作.job
- 路径.path
- 路径.id
- 修复.job
- 修复路径
在每个“fixes”、“jobs”、“paths”表中都有 ~50,000 行,当前超时为 6 分钟
'explain' 命令显示以下信息,尝试破译
1 SIMPLE j index PRIMARY job 62 (null) 73226 Using index; Using temporary
1 SIMPLE f ref path,job job 8 j.id 825
1 SIMPLE p eq_ref PRIMARY,path PRIMARY 8 f.path 1 Using where
'paths' 表的表创建语句:
CREATE TABLE `paths` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`path` varchar(250) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `path` (`path`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;