Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions sql_improvments/real_world_problam_Gal_Sasson.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Number,Question,What was the problem type?,What was the problem?,How would you fix it?,Answer,Commit,Comment
1,“SELECT COUNT(DISTINCT actor_id) FROM roles;”,״performance״,"""Using COUNT(DISTINCT) forces the database to sort and build temporary tables in memory. Rewriting it with a GROUP BY subquery optimizes index usage. Original query execution time: 0.42 seconds. Optimized query execution time: 0.11 seconds.""","""Rewrite using a GROUP BY subquery to leverage existing indexes more efficiently.""","""SELECT COUNT(*) FROM (SELECT actor_id FROM roles GROUP BY actor_id) AS t;""",N/A,"""Improves performance by utilizing internal index scanning instead of a heavy distinct sort overhead."""
2,״SELECT id FROM movies WHERE id NOT IN (SELECT movie_id FROM movies_genres);״,״performance״,״Using NOT IN with a subquery can be extremely slow and can return empty results if any movie_id in movies_genres is NULL.״,"״Rewrite the query using LEFT JOIN and filter for NULL, or use NOT EXISTS which is safer and better optimized by the query planner.״",״SELECT m.id FROM movies m LEFT JOIN movies_genres mg ON m.id = mg.movie_id WHERE mg.movie_id IS NULL;״,N/A,״Improves join plan execution and handles null values safely.״

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add running time here too

3,"״”SELECT m.id, m.name FROM movies m JOIN (SELECT * FROM movies_genres WHERE genre = 'Comedy') g ON m.id = g.movie_id;",״performance״,"״Subquery uses SELECT * which retrieves all columns, preventing the engine from using index-only scans and wasting memory buffer cache for unused columns.״",״Select only the required columns (movie_id) in the subquery.״,"״SELECT m.id, m.name FROM movies m JOIN (SELECT movie_id FROM movies_genres WHERE genre = 'Comedy') g ON m.id = g.movie_id;״",N/A,״Reduces data transfer and enables index-covered scanning.״

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add time here too

Binary file not shown.