Skip to content

Change query for fetching lsif job artifact

What does this MR do?

The query which has been introduced !23674 (merged) turned out to be ineffective. Let's replace it with 2 ones.

The old query:

SELECT ci_job_artifacts.* FROM ci_job_artifacts
  INNER JOIN ci_builds ON ci_builds.id = ci_job_artifacts.job_id AND ci_builds.type = Ci::Build
  INNER JOIN ci_pipelines ON ci_pipelines.id = ci_builds.commit_id
  WHERE ci_job_artifacts.project_id = 2009901 AND ci_job_artifacts.file_type = 15 AND ci_pipelines.sha =  e6ef7f8659a360bd912cf5ee4798b2bca52d31c2
  ORDER BY ci_job_artifacts.id DESC LIMIT 1

https://explain.depesz.com/s/7sCz

The new query:

SELECT ci_job_artifacts.* FROM ci_job_artifacts INNER JOIN ci_builds ON ci_builds.id = ci_job_artifacts.job_id AND ci_builds.type = Ci::Build INNER JOIN ci_pipelines ON ci_pipelines.id = ci_builds.commit_id WHERE ci_pipelines.project_id=2009901 AND ci_job_artifacts.file_type = 15 AND ci_pipelines.sha = e6ef7f8659a360bd912cf5ee4798b2bca52d31c2 ORDER BY ci_job_artifacts.id DESC LIMIT 1

https://explain.depesz.com/s/HUJx

Edited by Yorick Peterse

Merge request reports