diff --git a/sql-queries-10/understanding-sql-sargability/data-type-mismatch.sql b/sql-queries-10/understanding-sql-sargability/data-type-mismatch.sql new file mode 100644 index 00000000..af79ee8c --- /dev/null +++ b/sql-queries-10/understanding-sql-sargability/data-type-mismatch.sql @@ -0,0 +1,9 @@ +-- Non-Sargable (if id is INT) +EXPLAIN +SELECT * FROM customers +WHERE id = '1001'; + +-- Sargable +EXPLAIN +SELECT * FROM customers +WHERE id = 1001; \ No newline at end of file diff --git a/sql-queries-10/understanding-sql-sargability/function-on-a-column.sql b/sql-queries-10/understanding-sql-sargability/function-on-a-column.sql new file mode 100644 index 00000000..d7ab5c24 --- /dev/null +++ b/sql-queries-10/understanding-sql-sargability/function-on-a-column.sql @@ -0,0 +1,9 @@ +-- Non-Sargable +EXPLAIN +SELECT * FROM Student +WHERE YEAR(birth_date) = 2001; + +-- Sargable +EXPLAIN +SELECT * FROM Student +WHERE birth_date >= '2001-01-01' AND birth_date < '2002-01-01'; \ No newline at end of file diff --git a/sql-queries-10/understanding-sql-sargability/leading-wildcard-in-like.sql b/sql-queries-10/understanding-sql-sargability/leading-wildcard-in-like.sql new file mode 100644 index 00000000..2b5adf56 --- /dev/null +++ b/sql-queries-10/understanding-sql-sargability/leading-wildcard-in-like.sql @@ -0,0 +1,9 @@ +-- Non-sargable +EXPLAIN +SELECT * FROM Student +WHERE name LIKE '%Po'; + +-- Sargable +EXPLAIN +SELECT * FROM Student +WHERE name LIKE 'Po%'; \ No newline at end of file diff --git a/sql-queries-10/understanding-sql-sargability/main b/sql-queries-10/understanding-sql-sargability/main new file mode 100644 index 00000000..e69de29b diff --git a/sql-queries-10/understanding-sql-sargability/or-conditions-across-different-columns.sql b/sql-queries-10/understanding-sql-sargability/or-conditions-across-different-columns.sql new file mode 100644 index 00000000..512ab73a --- /dev/null +++ b/sql-queries-10/understanding-sql-sargability/or-conditions-across-different-columns.sql @@ -0,0 +1,10 @@ +-- non-sargable +EXPLAIN +SELECT * FROM Student +WHERE national_id = 123345566 OR name = 'John Liu'; + +-- Sargable +EXPLAIN +SELECT * FROM Student WHERE national_id = 123345566 +UNION +SELECT * FROM Student WHERE name='John Liu'; \ No newline at end of file diff --git a/sql-queries-10/understanding-sql-sargability/sargability-in-joins.sql b/sql-queries-10/understanding-sql-sargability/sargability-in-joins.sql new file mode 100644 index 00000000..8f3012bd --- /dev/null +++ b/sql-queries-10/understanding-sql-sargability/sargability-in-joins.sql @@ -0,0 +1,15 @@ +-- non-sargable JOINs +EXPLAIN +SELECT c.name, e.semester, e.grade +FROM Course c +JOIN Exam e + ON LOWER(c.id) = LOWER(e.course_id) +WHERE c.credits > 4; + + +-- Sargable +EXPLAIN +SELECT c.name, e.semester, e.grade +FROM Course c +JOIN Exam e + ON c.id = e.course_id WHERE c.credits > 4; \ No newline at end of file