Sobes.tech
Middle+

How to optimize a query with a JOIN between a large table (millions of records) and a small table (100-200 records)?

sobes.tech AI

Answer from AI

When joining a large table (millions of records) with a small one (100-200 records), it is important to minimize load and speed up query execution. Here are some approaches:

  • Use a hash subquery or temporary table: Load the small table into memory or a temporary table to accelerate the JOIN.
  • Indexes: Ensure that columns involved in the JOIN have indexes, especially on the large table.
  • JOIN using IN or EXISTS: Sometimes replacing JOIN with WHERE IN or EXISTS with a subquery can be more efficient.
  • Materialize the small table: If the small table rarely changes, you can cache its data in the application memory or use a materialized view.
  • Check the order of JOIN: In some DBMS, the order of tables in a JOIN affects the execution plan. Filter by the small table first.

Example using a temporary table:

CREATE TEMPORARY TABLE temp_small AS
SELECT * FROM small_table;

SELECT big.*
FROM big_table big
JOIN temp_small small ON big.key = small.key;

This allows the DBMS to optimize access to the small table and speed up the JOIN.