Skip to content

FULL JOIN implemented but 100x slower than Postgres: Performance footgun. #3140

@samjewell

Description

@samjewell

Hey, I still love GMS - thanks for your work on it.

I naively started to use FULL JOIN to join a bunch of large tables recently. 5000 rows, FULL JOIN to 15000 rows, FULL JOIN again to 700 rows, FULL JOIN again to 200 rows.

This was painfully slow. (I eventually realised I could rewrite this by adding an additional CTE at the start, and then using LEFT JOINs instead).

I feel like I was given enough rope to hang myself with here. As:

  • MySQL typically doesn't actually support FULL JOIN, and

EDIT: Postgres is 100x faster, even with no indices on the tables

  • GMS doesn't use Indexes during querying

My feeling was that an efficient FULL JOIN would use Indexes (but maybe I'm wrong)

I think I'd suggest removing FULL JOIN from GMS, so that:

  • It's more consistent with MySQL, and
  • You remove this performance footgun, while indices are still not supported.

Do you think you could speed this up?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions