In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `geo_loc1` ADD INDEX `geo_loc1_idx_key1_key2` (`key1`,`key2`);
ALTER TABLE `geo_loc2` ADD INDEX `geo_loc2_idx_key1_key2` (`key1`,`key2`);
ALTER TABLE `geo_loc3` ADD INDEX `geo_loc3_idx_key1_key2` (`key1`,`key2`);
ALTER TABLE `reference` ADD INDEX `reference_idx_key1_key2_latitude` (`key1`,`key2`,`latitude`);
SELECT
reference.*,
geo_loc1.bathy,
geo_loc1.gravity,
geo_loc1.magnet,
'data1' AS type
FROM
reference,
geo_loc1
WHERE
reference.latitude BETWEEN -30 AND -10
AND reference.longitude BETWEEN 10 AND 50
AND reference.date_st_date BETWEEN '2000-07-05' AND '2011-11-10'
AND reference.key1 = geo_loc1.key1
AND reference.key2 = geo_loc1.key2
UNION
SELECT
reference.*,
geo_loc2.bathy,
NULL AS gravity,
geo_loc2.magnet,
'data2' AS type
FROM
reference,
geo_loc2
WHERE
reference.latitude BETWEEN -30 AND -10
AND reference.longitude BETWEEN 10 AND 50
AND reference.date_st_date BETWEEN '2000-07-05' AND '2011-11-10'
AND reference.key1 = geo_loc2.key1
AND reference.key2 = geo_loc2.key2
UNION
SELECT
reference.*,
NULL AS bathy,
NULL AS gravity,
geo_loc3.magnet,
'data3' AS type
FROM
reference,
geo_loc3
WHERE
reference.latitude BETWEEN -30 AND -10
AND reference.longitude BETWEEN 10 AND 50
AND reference.date_st_date BETWEEN '2000-07-05' AND '2011-11-10'
AND reference.key1 = geo_loc3.key1
AND reference.key2 = geo_loc3.key2