diff --git a/sql_improvments/real_world_problam_Gal_Sasson.csv b/sql_improvments/real_world_problam_Gal_Sasson.csv new file mode 100644 index 0000000..cf5a373 --- /dev/null +++ b/sql_improvments/real_world_problam_Gal_Sasson.csv @@ -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.״ +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.״ \ No newline at end of file diff --git a/sql_improvments/real_world_problam_Gal_Sasson.numbers b/sql_improvments/real_world_problam_Gal_Sasson.numbers new file mode 100644 index 0000000..8eceed5 Binary files /dev/null and b/sql_improvments/real_world_problam_Gal_Sasson.numbers differ