Bird
Raised Fist0
PostgreSQLquery~5 mins

ANY and ALL with arrays in PostgreSQL - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: ANY and ALL with arrays
O(n)
Understanding Time Complexity

When using ANY and ALL with arrays in PostgreSQL, it's important to understand how the query time grows as the array size increases.

We want to know how many checks the database does when comparing values against array elements.

Scenario Under Consideration

Analyze the time complexity of the following PostgreSQL query using ANY and ALL with arrays.


SELECT * FROM products
WHERE price > ANY (ARRAY[10, 20, 30]);

SELECT * FROM products
WHERE price < ALL (ARRAY[100, 200, 300]);
    

This code checks if the product price is greater than any value in the array or less than all values in the array.

Identify Repeating Operations

Look at what repeats when the query runs:

  • Primary operation: Comparing the column value against each element in the array.
  • How many times: Once for each element in the array.
How Execution Grows With Input

As the array size grows, the number of comparisons grows too.

Input Size (n)Approx. Operations
33 comparisons
1010 comparisons
100100 comparisons

Pattern observation: The number of comparisons grows directly with the array size.

Final Time Complexity

Time Complexity: O(n)

This means the query time grows linearly with the number of elements in the array.

Common Mistake

[X] Wrong: "ANY and ALL check all array elements instantly regardless of size."

[OK] Correct: The database compares each element one by one until it finds a match or finishes checking, so more elements mean more work.

Interview Connect

Understanding how ANY and ALL work with arrays helps you explain query performance clearly and shows you know how databases handle comparisons internally.

Self-Check

"What if the array was replaced by a subquery returning many rows? How would the time complexity change?"

Practice

(1/5)
1. What does the ANY keyword do when used with an array in PostgreSQL?
easy
A. It checks if a value matches at least one element in the array.
B. It checks if a value matches all elements in the array.
C. It returns all elements of the array.
D. It returns the first element of the array.

Solution

  1. Step 1: Understand the ANY keyword

    ANY compares a single value to each element in an array and returns true if it matches any one of them.
  2. Step 2: Compare with ALL keyword

    ALL requires the value to match every element, which is different from ANY.
  3. Final Answer:

    It checks if a value matches at least one element in the array. -> Option A
  4. Quick Check:

    ANY = matches any element [OK]
Hint: ANY means match at least one element in array [OK]
Common Mistakes:
  • Confusing ANY with ALL
  • Thinking ANY returns all elements
  • Assuming ANY returns first element only
2. Which of the following is the correct syntax to check if the number 5 is equal to any element in the array ARRAY[3,5,7] in PostgreSQL?
easy
A. SELECT 5 = ANY ARRAY[3,5,7];
B. SELECT 5 = ANY[3,5,7];
C. SELECT 5 = ANY(ARRAY[3,5,7]);
D. SELECT 5 = ALL ARRAY(3,5,7);

Solution

  1. Step 1: Check correct ANY syntax

    The correct syntax uses = ANY(ARRAY[...]) with parentheses around ARRAY.
  2. Step 2: Identify wrong options

    SELECT 5 = ANY ARRAY[3,5,7]; misses parentheses around ARRAY, causing syntax error. SELECT 5 = ANY[3,5,7]; uses square brackets incorrectly. SELECT 5 = ALL ARRAY(3,5,7); uses ALL instead of ANY and wrong ARRAY syntax without [].
  3. Final Answer:

    SELECT 5 = ANY(ARRAY[3,5,7]); -> Option C
  4. Quick Check:

    = ANY(ARRAY[...]) [OK]
Hint: Use = ANY(ARRAY[...]) with parentheses [OK]
Common Mistakes:
  • Omitting parentheses around ARRAY
  • Using square brackets instead of ARRAY keyword
  • Mixing ANY and ALL keywords
3. Given the query:
SELECT 4 > ALL ARRAY[2,3,5];
What is the result?
medium
A. true
B. null
C. false
D. syntax error

Solution

  1. Step 1: Understand ALL with comparison

    The query uses 4 > ALL ARRAY[2,3,5] but misses required parentheses around the array.
  2. Step 2: Correct syntax and error

    Correct is 4 > ALL (ARRAY[2,3,5]). Without (), it causes syntax error. (Note: if fixed, 4>5 is false so result false, but as given: error.)
  3. Final Answer:

    syntax error -> Option D
  4. Quick Check:

    Missing () around ARRAY -> syntax error [OK]
Hint: op ALL requires (ARRAY[...]) [OK]
Common Mistakes:
  • Assuming query runs and gets false
  • Forgetting parentheses around ARRAY
  • Confusing with ANY behavior
4. Identify the error in this query:
SELECT * FROM users WHERE age = ALL [20, 30, 40];
medium
A. ALL cannot be used with numbers
B. Using square brackets instead of ARRAY keyword
C. Missing comparison operator
D. No error, query is correct

Solution

  1. Step 1: Check array syntax in WHERE clause

    PostgreSQL requires arrays to be written with ARRAY keyword, not square brackets alone.
  2. Step 2: Identify correct syntax

    The correct syntax is age = ALL (ARRAY[20, 30, 40]). Using just [20, 30, 40] causes syntax error.
  3. Final Answer:

    Using square brackets instead of ARRAY keyword -> Option B
  4. Quick Check:

    Arrays need ARRAY keyword, not just brackets [OK]
Hint: Use ARRAY[...] not just brackets for arrays [OK]
Common Mistakes:
  • Using [] instead of ARRAY[]
  • Thinking ALL can't compare numbers
  • Missing operator after WHERE
5. You want to find all products priced less than every price in the array ARRAY[100, 200, 300]. Which query correctly achieves this?
hard
A. SELECT * FROM products WHERE price < ALL (ARRAY[100, 200, 300]);
B. SELECT * FROM products WHERE price < ANY ARRAY[100, 200, 300];
C. SELECT * FROM products WHERE price > ALL ARRAY[100, 200, 300];
D. SELECT * FROM products WHERE price = ALL ARRAY[100, 200, 300];

Solution

  1. Step 1: Understand the requirement

    We want products with price less than every price in the array, meaning price must be less than 100 (the minimum).
  2. Step 2: Choose correct operator and keyword

    Using price < ALL (ARRAY[100, 200, 300]) checks if price is less than all elements. ANY would only require less than one.
  3. Final Answer:

    SELECT * FROM products WHERE price < ALL (ARRAY[100, 200, 300]); -> Option A
  4. Quick Check:

    Less than ALL means less than every element [OK]
Hint: Use < ALL (ARRAY[...]) to check less than every element [OK]
Common Mistakes:
  • Using ANY instead of ALL for all elements
  • Using > instead of < for less than
  • Using = ALL which checks equality
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard