Skip to content

Instantly share code, notes, and snippets.

@rbairwell
Created October 10, 2019 09:09
Show Gist options
  • Save rbairwell/88139f27ae05a91fe35c1906ad4f32ea to your computer and use it in GitHub Desktop.
Save rbairwell/88139f27ae05a91fe35c1906ad4f32ea to your computer and use it in GitHub Desktop.
Difference in queries
Runs in <1s:
SELECT UserEntity.*
FROM (
SELECT UserCoverageEntity.user_id
FROM UserCoverageEntity
WHERE UserCoverageEntity.id=UNHEX('11e9e4e9c970a3f4857698fa9b0d2efc')
UNION
SELECT UserSchemeEntity.user_id
FROM UserSchemeEntity
LEFT JOIN SchemeCategoryEntity ON SchemeCategoryEntity.id=UserSchemeEntity.schemeCategory_id
WHERE SchemeCategoryEntity.scheme_id=UNHEX('11e9ded018e2ac0eac7098fa9b0d2efc')
) AS b
LEFT JOIN UserEntity ON b.user_id=UserEntity.id
B: Full table scan > 10s:
SELECT UserEntity.*
FROM UserEntity
WHERE UserEntity.id IN (SELECT UserEntity.id FROM UserEntity
INNER JOIN (
SELECT UserCoverageEntity.user_id
FROM UserCoverageEntity
WHERE UserCoverageEntity.id=UNHEX('11e9e4e9c970a3f4857698fa9b0d2efc')
) AS c ON c.user_id=UserEntity.id
)
OR UserEntity.id IN (SELECT UserEntity.id FROM UserEntity
INNER JOIN (
SELECT UserSchemeEntity.user_id
FROM UserSchemeEntity
LEFT JOIN SchemeCategoryEntity ON SchemeCategoryEntity.id=UserSchemeEntity.schemeCategory_id
WHERE SchemeCategoryEntity.scheme_id=UNHEX('11e9ded018e2ac0eac7098fa9b0d2efc')
) AS b ON b.user_id=UserEntity.id)
C: Full table scan > 10s:
SELECT *
FROM UserEntity
WHERE
UserEntity.id IN (
SELECT UserCoverageEntity.user_id
FROM UserCoverageEntity
WHERE UserCoverageEntity.id=UNHEX('11e9e4e9c970a3f4857698fa9b0d2efc')
)
OR
UserEntity.id IN (
SELECT UserSchemeEntity.user_id
FROM UserSchemeEntity
LEFT JOIN SchemeCategoryEntity ON SchemeCategoryEntity.id=UserSchemeEntity.schemeCategory_id
WHERE SchemeCategoryEntity.scheme_id=UNHEX('11e9ded018e2ac0eac7098fa9b0d2efc')
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment